默認值是雙擊。如何覆蓋它?如何單擊NSTableView中的NSTextFieldCell進行編輯?
3
A
回答
0
我不認爲單擊是一個很好的理想。單擊只需選擇,然後雙擊做一些默認的事情。
3
實現單擊行爲的一種方法是取代setAction
方法。這裏是一個允許用戶通過點擊一次編輯從表中的任一行一列這樣做的NSTableView的一個例子:
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
現在做出的綁定在Interface Builder:
- 創建CLA的對象ss
SingleClickAppDelegate
它將把上面的代碼與GUI連接起來。 - 創建一個NSTableView並將其綁定到
theTable
。 - 將NSTableView dataSource和代表綁定到
SingleClickAppDelegate
。 - 創建一個NSArrayController並將其綁定到
theArrayController
。 - 對於表中的每一列:
- 綁定其值設置爲
theArrayController
- 設置控制器關鍵到arrangedObjects。
- 從上面設置型號關鍵路徑每個鍵(在這個例子中它是所有「col1」和「COL2」)
- 綁定其值設置爲
保存項目並編譯,現在應該有一個表一些行。當單擊一行時,第二列就可以編輯了。
選擇行中的任何位置將始終編輯在中設置的列。
2
當單一的點擊動作被稱爲TableView
調用此方法爲特定的細胞
- (void)editColumn:(NSInteger)columnIndex
row:(NSInteger)rowIndex
withEvent:(NSEvent *)theEven
select:(BOOL)flag
0
我覺得最優雅的選擇是繼承NSTableView的如下:
myNSTableView.h
#import <Cocoa/Cocoa.h>
@interface myNSTableView : NSTableView {
}
- (void)singleClickEdit: (id)sender;
@end
myNSTableView。米
#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
相反NSTableView的的,使用myNSTableview類,即:
#import <Cocoa/Cocoa.h>
#import "myNSTableView.h"
@interface Preference : NSPanel {
NSMutableArray *chargeArray; // Array of ChargeDefault objects
IBOutlet myNSTableView *chargeTableView;
}
從IB中,選擇其中已放入的NSView的NSTableView的圖形對象。選擇「Indentity Inspector」選項卡,然後選擇myNSTableView而不是NSTableView。
你完成了。
0
而不是繼承NSTableView的子類,您可以創建一個圖章。 在視圖控制器(MyViewController.h或具有連接到所述表視圖一個IBOutlet任何文件)的頭文件中,聲明新cathegory:
@interface NSTableView(OneClickEdit)
- (void)singleClickEdit: (id)sender;
@end
@interface MyViewController : NSViewController
{
IBOutlet NSTableView *tableView;
...
然後在相應的m文件(MyViewController.m)添加cathegory實施MyViewController實現本身之外,並作出新的方法,你的表視圖的操作方法,在您的視圖控制器的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. NSTableView + NSTextFieldCell動態行大小
- 2. 將可編輯的NSTextFieldCell添加到我的NSTableView
- 3. NSTableView如何點擊單元格中的任何位置來編輯文本?
- 4. NSTableView的製作單元編程編輯
- 5. NSTableView可編輯標題並在表格中雙擊單元格
- 6. NSTableView中的可編輯NSTextField
- 7. 如何在編輯NSTableView中的單元格後保留字段編輯器?
- 8. 我如何在NSTableView中的NSTextFieldCell前顯示NSImage
- 9. 如何在NSTableView中設置NSTextFieldCell的框架
- 10. 如何鎖定表單進行編輯?
- 11. 如何在NSTableView中保存行的編輯內容?
- 12. 處理編輯NSTableView
- 13. 爲NSTableView啓用編輯菜單
- 14. 編輯時更改NSTableView單元格值
- 15. 雙擊Cocoa中的NSTableView行?
- 16. 開始NSTextFieldCell編輯通過點擊鏈接
- 17. 點擊行進行編輯/刪除?
- 18. 如何模擬內容編輯元素上進行編輯的點擊
- 19. 在NSTableView上進行結束編輯(基於視圖)
- 20. 如何在點擊事件中打開表單以進行編輯?
- 21. 如何突出顯示和編輯NSTableView中的行(如SnowLeopard中的iCal)?
- 22. NSTextFieldCell中的多行
- 23. NSTableView單元格編輯:在哪裏執行後期編輯操作?
- 24. 如何激活樹視圖中的單元格進行編輯
- 25. 無法編輯NSTableView中的表格
- 26. NSTableView數據源編輯
- 27. NSTableView編輯不改變NSMutableArray
- 28. SlickGrid_CheckBox編輯單擊
- 29. 單擊編輯NSTextField
- 30. 如何停止NSTextField阻止NSTableView行的右鍵單擊?
在某些情況下,它是一個好主意。 – Lucidus 2011-05-25 01:27:13