2013-07-30 3 views
0

나는 조금 더 붙어 있습니다. . .NSCellView의 특정 대상 NSTextField

사용자 정의 NSTableCellView가있는 NSTableView가 있는데, 그 중 하나에는 NSTextField 몇 개가 들어 있습니다.

지금은 일부 필드에 표시되는 값을 수정하고 싶은, 그래서 다음과 같이 세포의 기능을 만들 덮어 만들었습니다

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 

    // Get a new ViewCell 
    NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 

을 그때 특정 열을 대상으로 다음 코드를 사용하고 :

if ([tableColumn.identifier isEqualToString:@"Tweets"]){ 
     NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
     //Set predicate and filter for New tweets page 
     if ([self.currentTwitterView isEqualToString:@"new"]) { 
     NSPredicate *testForTrue = [NSPredicate predicateWithFormat:@"(approved == NO) AND (tweetDeleted == NO) AND (scheduledTweet == NO)"]; 
     NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"postDate" ascending:NO]; 
     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil]; 
     [request setPredicate:testForTrue]; 
     [request setSortDescriptors:sortDescriptors]; 

     //Set filter and predicate for the Approved tweets page 
    } else if ([self.currentTwitterView isEqualToString:@"approved"]){ 
     NSPredicate *testForTrue = [NSPredicate predicateWithFormat:@"(approved == YES) AND (tweetDeleted == NO) AND (scheduledTweet == NO)"]; 
     NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"approvedDate" ascending:NO]; 
     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil]; 
     [request setPredicate:testForTrue]; 
     [request setSortDescriptors:sortDescriptors]; 

     //Set filter and preicate for the Deleted tweets page 
    } else if ([self.currentTwitterView isEqualToString:@"deleted"]){ 
     NSPredicate *testForTrue = [NSPredicate predicateWithFormat:@"tweetDeleted == YES"]; 
     NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"deletedDate" ascending:NO]; 
     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil]; 
     [request setPredicate:testForTrue]; 
     [request setSortDescriptors:sortDescriptors]; 

     //Set filter and preicate for the Deleted tweets page 
    } else if ([self.currentTwitterView isEqualToString:@"scheduled"]){ 
     NSPredicate *testForTrue = [NSPredicate predicateWithFormat:@"scheduledTweet == YES"]; 
     NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"scheduledDate" ascending:NO]; 
     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil]; 
     [request setPredicate:testForTrue]; 
     [request setSortDescriptors:sortDescriptors]; 
    } 
    //Setup the Request 
    [request setEntity:[NSEntityDescription entityForName:@"Tweet" inManagedObjectContext:_managedObjectContext]]; 

    //Assign the predicate to the fetch request 
    NSError *error = nil; 

    //Create an array from the returned objects 
    NSArray *fetchedObjects = [_managedObjectContext executeFetchRequest:request error:&error]; 

    Tweet *selectedTweet = [fetchedObjects objectAtIndex:row]; 

    [cellView.textField setStringValue:[NSString stringWithFormat:@"Access granted for %@", selectedTweet.scheduledDate]]; 

    return cellView; 

그러나, 나는 내 인생, 셀에 각각의 특정 텍스트 필드를 대상으로 그때 함께 IBOutlet을 만들 경우 내가 (어떤 의미)가 다수 인에 대한 오류를 얻는 방법 작동하지 않을 수 있습니다 하지만 내가 그걸하지 않으면, 그럴 수있는 방법이 없습니다. 나는 그것을 볼 수있다.

나는 애플 클래스 문서를 살펴 봤지만 실제로는 그렇게 정교하지 않았다.

대단히 감사합니다.

건배

가레스

답변