2012-04-16 2 views
1

У меня есть NSMutableArray, который содержит NSMutableDictionaries .Я хотел бы, чтобы отобразить одну строку из этого словаря в строке в NSTableView .Это уникальный среди objects.By по умолчанию это имеет некоторое известное значение. Когда объект вставлен и если найдена какая-либо повторяющаяся строка, попытался показать предупреждение и отредактировать соответствующую строку, используя следующий API.Редактирование строки дубликатов с использованием NSAlerts в NSTableView

- (void)editColumn:(NSInteger)column row:(NSInteger)row withEvent:(NSEvent *)theEvent select:(BOOL)select;

Это работает отлично.

Если пользователь нажимает на вкладку или, если пользователь нажимает на какой-либо другой точки зрения, (отставку FirstResponder) без переименования, старое название до сих пор существует в tableview, я хочу, чтобы вернуть эту строку edit mode. Как это сделать?

ответ

1
I was able to solve the issue.Modified the alert using sheets. 
Following code worked for me. 

- (void)controlTextDidEndEditing:(NSNotification *)aNotification 
{ 
    if(duplicate)//duplicatefound 
    { 
     [self showAlertForDuplicates]; 
    } 
} 


// Selector 

- (void)duplicateAlertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo 
{ 
    if (returnCode == NSAlertFirstButtonReturn) 
    { 
      [self.tableView editColumn:0 row:self.selectedRow withEvent:nil select:NO]; 
    } 
} 

-(void) showAlertForDuplicates 
{ 
    NSAlert *alert = [[[NSAlert alloc] init] autorelease]; 
    [alert addButtonWithTitle:@"Ok"]; 
    [alert setMessageText: @"DuplicateName"]; 
    [alert setInformativeText: @"Rename the item")]; 
    [alert setAlertStyle:NSInformationalAlertStyle]; 
    [alert beginSheetModalForWindow:nil modalDelegate:self didEndSelector:@selector(duplicateAlertDidEnd:returnCode:contextInfo:) contextInfo:nil]; 
}