我无法弄清楚如何将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;
答案 0 :(得分:2)
你不能在你的细胞类中放置prepareForSegue;它是一个UIViewController方法,所以如果你在你的单元类中有它,它就不会被调用。您需要将其移动到视图控制器,并使用sender参数(将是您触摸的单元格)来获取indexPath。使用indexPath,您可以查询数组以获取要传递的值 - 您不应该从单元格中获取值,您应该从模型中获取值。