我再次陷入困境。 。
我有一个带有一些自定义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;
但是,我不能为我的生活找出如何定位单元格中的每个特定TextField,如果我创建一个IBOutlet然后我得到一个错误关于有多个(这是有道理的)但如果我不'这样做,然后我无法访问它,我可以看到。
我看过苹果类文档,但它也没有详细说明。
非常感谢!
干杯
加雷
答案 0 :(得分:0)
包含您需要的所有信息。
特别是标有以下部分的部分:
Acquiring a Cell from Interface Builder