在UITableViewCell中按下按钮后将数据传递到新视图

时间:2014-07-12 19:42:16

标签: ios uitableview

我无法弄清楚如何将UITableViewCell中的信息传递到按下“你的游戏”按钮后出现的视图。每个单元格都有与之关联的属性字符串gameId,它对每个单元格都是唯一的,并且是我想要传递的信息:

以下代码显示了单元格的创建。 NSLog语句在测试期间输出正确的gameId:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"gameCell";
GameCell *cell = (GameCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

PFObject *myPartners = [self.games objectAtIndex:indexPath.row];
cell.partnerName.text = [myPartners objectForKey:@"receiverName"];
cell.gameId = myPartners.objectId;
NSLog(@"Cell game: %@",cell.gameId);
return cell;
}

在GameCell类中,使用以下方法更改视图并传递gameId: 它将CameraViewControllers属性“gameObjectId”设置为“gameId”

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"showCamera"]){
    CameraViewController *cameraView = (CameraViewController *)segue.destinationViewController;
    cameraView.gameObjectId = self.gameId;
    [segue.destinationViewController setHidesBottomBarWhenPushed:YES];
}
}

但是,当加载视图时,gameObjectId值为null。

有人可以帮我这个吗?


gameObjectId在CameraViewController类中:

@property (strong,nonatomic) NSString *gameObjectId;

gameId在GameCell类中为:

@property (strong,nonatomic) NSString *gameId;

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

你不能在你的细胞类中放置prepareForSegue;它是一个UIViewController方法,所以如果你在你的单元类中有它,它就不会被调用。您需要将其移动到视图控制器,并使用sender参数(将是您触摸的单元格)来获取indexPath。使用indexPath,您可以查询数组以获取要传递的值 - 您不应该从单元格中获取值,您应该从模型中获取值。