1

NSMutableArray含むがありますNSMutableDictionaries。この辞書の1つの文字列をに表示したいと思いますNSTableView。この文字列はオブジェクト間で一意です。デフォルトでは、これには既知の値があります。オブジェクトが挿入され、重複する文字列が見つかった場合は、試してみました。アラートを表示し、次のAPIを使用して対応する行を編集します。

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

これは問題なく動作します。

ユーザーがタブを押すか、ユーザーが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 に答える