2012-04-16 5 views
1

에 NSAlerts를 사용하여 중복 행을 편집 나는 objects.By이 일부 알려진 값을 갖는 기본 중 .I이 NSTableView .This 문자열이 사전에서 하나의 문자열을 표시하고자하는 NSMutableDictionaries이 포함 된 NSMutableArray 고유 있습니다. 객체가 삽입되고 중복 문자열이 발견되면 다음 API를 사용하여 경고를 표시하고 해당 행을 편집하려고했습니다.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]; 
}