我有一个应用程序,用户单击TableViewController中的行,然后在另一个视图控制器上,它显示一些信息。现在只显示objectAtIndex:0的信息。我想要它,以便我可以获取用户选择的行的对象。
TableViewController:
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
NSManagedObjectModel *playerModel = [self.playersArray objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@ vs %@", [playerModel valueForKey:@"player1"], [playerModel valueForKey: @"player2"]]];
[cell.detailTextLabel setText:[playerModel valueForKey:@"date"]];
return cell;
的ViewController:
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Match"];
self.playersArray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSManagedObjectModel *playerModel = [self.playersArray objectAtIndex: 0];
UILabel *location = [[UILabel alloc]initWithFrame:CGRectMake(20, 130, 300, 20)];
[location setText:[NSString stringWithFormat:@"Games: %@", [playerModel valueForKey:@"location"]]];
[self.view addSubview:location];
TableViewController工作正常,但正如我上面所说,上面只显示了objectAtIndex:0。
答案 0 :(得分:1)
由于您的其他ViewController无法直接在您的实现中访问TableViewController的tableView
(我想),您必须将模型对象实际传输到ViewController。具体取决于您的实施,即您是否使用故事板。
在任何情况下,我都建议为ViewController定义要传输的NSManagedObject
的公共属性。
如果您使用故事板,则可以在prepareForSegue:
中设置此属性,如果您不使用故事板,则在呈现ViewController之前将此属性设置为模型对象。
答案 1 :(得分:0)
您可以检查所选索引并从中获取行:
[[self.tableView indexPathForSelectedRow] row];
答案 2 :(得分:0)
有几种方法可以解决这个问题。您可以设置UITableView委托,并实现-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
,也可以调用UITableView方法[myTableVie indexPathForSelectedRow]