1

我有一个NSMutableArray包含NSMutableDictionaries。我想在一个中显示这个字典中的一个NSTableView字符串。这个字符串在对象中是唯一的。默认情况下,它有一些已知的值。当插入一个对象并且找到任何重复的字符串时,尝试显示警报并使用以下 API 编辑相应的行。

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

这工作正常。

如果用户按下选项卡或用户按下任何其他视图,(resign FirstResponder)而不重命名,旧名称仍然存在于 中tableview,我想将此行带回edit mode。如何做到这一点?

4

1 回答 1

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];
}
于 2012-04-18T13:56:14.360 回答