获取所选行的索引

时间:2015-11-10 14:48:31

标签: ios objective-c

我有一个应用程序,用户单击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。

3 个答案:

答案 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]