我有一个包含NSMutableArrayNSMutableDictionaries。我想在NSTableView中显示该词典中的一个字符串。该字符串在对象之间是唯一的。默认情况下,它具有一些已知值。如果找到任何重复的字符串,请尝试显示警报,并使用以下API编辑相应的行。

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

这工作正常。

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

最佳答案

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];
}

关于objective-c - 使用NSTableView中的NSAlerts编辑重复行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10174899/

10-12 20:56