Одна вещь, которую мне нравится делать при использовании контроллера массива с табличным представлением, - переопределить add:
, чтобы опубликовать уведомление, чтобы новый элемент был выбран и сразу открыт для редактирования.Я на самом деле опубликовал это на CocoaDev некоторое время назад:
// Subclass of NSArrayController
- (void)awakeFromNib
{
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(objectAdded:)
name: @"Object Added"
object: self]
}
- (void)add: (id)sender
{
[super add: sender]
NSNotification * note = [NSNotification
notificationWithName: @"Object Added"
object: self]
// The add method doesn't really take effect until this run loop ends,
// (see NSArrayController docs) so the notification needs
// to wait to post. Thus, enqueue with NSPostWhenIdle
[[NSNotificationQueue defaultQueue] enqueueNotification: note
postingStyle: NSPostWhenIdle]
}
- (void)objectAdded: (NSNotification *)note
{
// when the notification finally arrives, tell the table to edit
[[self contentTable] editColumn:0
row:[self selectionIndex]
withEvent:nil
select:YES]
}
Конечно, можно сделать то же самое с контроллером, который не является подклассом NSArrayController
;это только первый способ, который я понял.