- 474 名前:名称未設定 mailto:sage [2008/08/06(水) 13:40:02 ID:Qhr+d9FS0]
- >>473
やはりIBだけでは無理なんですね。とりあえず以下のようにしたらできました。 @interface MyTableController : NSArrayController{ IBOutlet NSTableView* _tableView; } @end @implementation MyTableController // たった今追加&選択されたのを編集状態に - (void)editSelected:(id)sender{ int r = [_tableView selectedRow]; if( (0 <= r) && (r < [_tableView numberOfRows]) ){ [_tableView editColumn:0 row:r withEvent:nil select:YES]; } } - (void)add:(id)sender{ [super add:sender]; //本来の処理 // 次のイベントループ?で編集状態にする [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)0.0 target:self selector:@selector(editSelected:) userInfo:nil repeats:NO]; } @end Timerで一度間を置かないと成功しませんでした。これは、add:自体はモデル(arrangedObjects)に 1要素追加しただけで、TableViewが新規行を認識するのはそれより後だから、だと認識しています。 で、add:→TableViewが新規行を選択→編集状態にする の順でやるのが自然な流れかと思います。 TableViewのDelegateかNotificationでもできそうですが、バインディング的にはKVOでやるべき なのかな〜?とか推測してますが理解不十分でよく分からん状態です。 何であれ上の方法ではちょっと不確実のようにも思えるのでもうちょっと追求してみます。 とりあえずはレスありがとうございました。
|

|