2015-11-10 57 views
1

我有一個應用程序,其中用戶單擊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

[self.tableView indexPathForSelectedRow] .row – Alex

+0

thx但我怎麼能作爲一個整數。我試過:NSInteger * row = [self.tableView indexPathForSelectedRow] .row,但它告訴我,它有問題的NSInteger –

+3

NSInteger row = [self.tableView indexPathForSelectedRow] .row; // NSInteger * row是一個指向整數的指針,不是整數 – ekscrypto

回答

1

由於您的其他視圖控制器不能訪問TableViewController的tableView直接在您的實現(我想),你必須真正將您模型對象到您的ViewController。如何取決於你的實施,即你是否使用故事板。

在任何情況下,我會建議爲您想要傳輸的NSManagedObject定義ViewController的公共屬性。

如果您使用故事板,您可以在prepareForSegue:中設置此屬性,如果您沒有使用故事板,那麼在呈現ViewController之前將該屬性設置爲您的模型對象。

+0

actaully所有3個答案都有幫助,但是這個幫了我最多的 –

+0

真棒,很高興聽到 – JonEasy

0

您可以檢查所選擇的指數,並從中獲取該行:

[[self.tableView indexPathForSelectedRow] row]; 
0

有處理這幾種方法。你可以設置一個UITableView委託,並實現-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath,或者你可以調用的UITableView方法[myTableVie indexPathForSelectedRow]

+0

thx這個工作 –