기본값은 두 번 클릭입니다. 어떻게 그것을 무시할 수 있습니까?NSTableView에서 NSTextFieldCell을 한 번 클릭하여 편집하려면 어떻게해야합니까?
답변
단일 클릭이 이상적이라고 생각하지 않습니다. 한 번 클릭하여 선택하고 두 번 클릭하면 기본 작업이 수행됩니다.
단일 클릭 동작을 구현하는 한 가지 방법은 setAction
메서드를 오버라이드하는 것입니다.
SingleClickAppDelegate.h을
#import <Cocoa/Cocoa.h>
@interface SingleClickAppDelegate : NSObject <NSApplicationDelegate>
{
IBOutlet NSTableView *theTable;
IBOutlet NSArrayController *theArrayController;
NSInteger colNumber;
}
- (void)addRow;
- (void)doClickEdit: (id)sender;
@end
SingleClickAppDelegate.m
#import "SingleClickAppDelegate.h"
@implementation SingleClickAppDelegate
- (void)awakeFromNib
{
[self addRow];
[self addRow];
[self addRow];
[theTable setTarget:self];
/// Single click action
[theTable setAction:@selector(doClickEdit:)];
}
/// Add some temporary data to edit
- (void)addRow
{
NSMutableDictionary *values = [[NSMutableDictionary alloc] init];
[values setObject:[NSNumber numberWithLong:colNumber++] forKey:@"col1"];
[values setObject:@"Text" forKey:@"col2"];
[theArrayController addObject:values];
[values release];
[theTable reloadData];
}
/// Action
- (void)doClickEdit: (id)sender
{
NSLog(@"doClickEdit:");
NSInteger row = [theTable clickedRow];
[theTable editColumn:1 row:row withEvent:nil select:YES];
}
@end
을 다음은, 사용자가 한 번 클릭하여 테이블의 모든 행에서 하나 개의 열을 편집 할 수 NSTableView는 위해 그 일 예는
이제 인터페이스 빌더에 바인딩합니다
- 는 CIA 요원의 개체 만들기 ss
SingleClickAppDelegate
은 위의 코드를 GUI와 인터페이스합니다. - NSTableView를 만들고
theTable
에 바인딩합니다. - NSTableView 데이터 소스 및 대표단을
SingleClickAppDelegate
에 바인드합니다. - NSArrayController를 만들고
theArrayController
에 바인딩하십시오. 테이블의 각 컬럼에 대한
:
- 그 값 바인딩
- 는 arrangedObjects에 컨트롤러 키을 설정합니다.
- 지금있는 테이블이 있어야한다,
theArrayController
프로젝트를 저장합니다 (이 예에서 "이 COL1"와 "COL2"입니다) 위의 각 키에 모델 키 경로을 설정하고 컴파일 일부 행. 행을 클릭하면 두 번째 열을 편집 할 수 있습니다.
행의 아무 곳이나 선택하면 항상 doClickEdit:
에 설정된 열을 편집합니다.
한 번의 클릭 동작은
- (void)editColumn:(NSInteger)columnIndex
row:(NSInteger)rowIndex
withEvent:(NSEvent *)theEven
select:(BOOL)flag
내가 가장 우아한 옵션은 다음과 같이 NSTableView는 하위 클래스라고 생각 특정 셀에 대한 TableView
호출이 방법으로 호출 될 때 :
myNSTableView.h
#import <Cocoa/Cocoa.h>
@interface myNSTableView : NSTableView {
}
- (void)singleClickEdit: (id)sender;
@end
myNSTableView.NSView의에 넣어왔다 NSTableView는 그래픽 객체를 선택, IB에서
#import <Cocoa/Cocoa.h>
#import "myNSTableView.h"
@interface Preference : NSPanel {
NSMutableArray *chargeArray; // Array of ChargeDefault objects
IBOutlet myNSTableView *chargeTableView;
}
대신 NSTableView는의
#import "myNSTableView.h"
@implementation myNSTableView
- (void)awakeFromNib
{
[self setAction:@selector(singleClickEdit:)];
}
- (void)singleClickEdit: (id)sender
{
NSLog(@"singleClickEdit:");
[self editColumn:[self clickedColumn] row:[self clickedRow] withEvent:nil select:NO];
}
@end
, m는 myNSTableview 클래스, 즉를 사용합니다. "Indentity Inspector"탭을 선택하고 NSTableView 대신 myNSTableView를 선택하십시오.
모든 작업이 완료되었습니다.
NSTableView를 서브 클래 싱하는 대신 카테 고리를 만들면됩니다. (해당하는 .m 파일에 다음 을
@interface NSTableView(OneClickEdit)
- (void)singleClickEdit: (id)sender;
@end
@interface MyViewController : NSViewController
{
IBOutlet NSTableView *tableView;
...
:보기 컨트롤러 (MyViewController.h 또는 테이블 뷰에 연결 함께 IBOutlet을 가진 파일)의 헤더 파일에서 , 새로운 cathegory 선언 MyViewController.m가) MyViewController 구현 자체의 외부 cathegory의 구현을 추가하고 뷰 컨트롤러의 viewDidLoad에에 그 새로운 방법을 테이블보기의 작용 방법을 : 어떤 경우
@implementation NSTableView(OneClickEdit)
- (void)singleClickEdit: (id)sender
{
[self editColumn:[self clickedColumn] row:[self clickedRow] withEvent:nil select:YES];
}
@end
@implementation MyViewContoller
- (void)viewDidLoad
{
[super viewDidLoad];
[tableView setAction:@selector(singleClickEdit:)];
....
- 1. 한 번 클릭하여 버전 복제 문제를 업데이트하십시오.
- 2. SquareSpace에서 내 템플릿을 편집하려면 어떻게해야합니까?
- 3. 한 번 클릭하여 gridview에서 선택 버튼 텍스트를 비활성화하려면 어떻게합니까? (ASP.NET)
- 4. 한 번 클릭하여 인수에 관한 질문을 엽니 다.
- 5. MFC 목록 상자에서 셀을 편집하려면 어떻게해야합니까?
- 6. SmartGWT의 DetailViewer에서 필드를 편집하려면 어떻게해야합니까?
- 7. Eclipse에서 파일을 복사하고 편집하려면 어떻게해야합니까?
- 8. HTML 파일을 직접 편집하려면 어떻게해야합니까?
- 9. 명령 줄에서 파일을 편집하려면 어떻게해야합니까?
- 10. iPhone에서 Shark 구성을 편집하려면 어떻게해야합니까?
- 11. Access ADP 파일을 편집하려면 어떻게해야합니까?
- 12. WordPress 사이트의 코드를 편집하려면 어떻게해야합니까?
- 13. 스마트 카드의 내용을 편집하려면 어떻게해야합니까?
- 14. kaazing의 서버 코드를 편집하려면 어떻게해야합니까?
- 15. 창에서 개별 픽셀을 편집하려면 어떻게해야합니까?
- 16. NSFormatter가 NSTextFieldCell을 연속적으로 확인하도록하십시오
- 17. VS2008 두 번 클릭하여 클립 보드에 복사
- 18. NSTableView에서 스크롤
- 19. mif/mid gis 데이터 형식을 편집하려면 어떻게해야합니까?
- 20. 사용자가 편집 가능한 셀을 두 번 클릭 할 때 nstableview에서 동작을 보내려면 어떻게해야합니까?
- 21. 표준 출력으로 인쇄 된 문자열을 편집하려면 어떻게해야합니까?
- 22. PHP로 외부 CSS 파일을 편집하려면 어떻게해야합니까?
- 23. 두 번 클릭하여 행을 삭제하는 방법은 무엇입니까?
- 24. 두 번 클릭하여 .py가 작동하지 않습니다.
- 25. 두 번 클릭하여 .R 파일 열기 (Windows)
- 26. 한 번 팝업으로 표시
- 27. VS 2010 디자인보기에서 WPF DataTemplate을 편집하려면 어떻게해야합니까?
- 28. 옆으로 NSTextFieldCell을 구현하는 방법은 무엇입니까?
- 29. 양식에 이중 클릭하여 코드를 열려면 어떻게해야합니까?
- 30. PowerShell을 사용하여 HTML 태그를 편집하려면 어떻게해야합니까?
, 그것은이다 좋은 생각. – Lucidus