将数据从自定义TableCell传递到ViewController

时间:2013-12-18 00:06:24

标签: ios uitableview uiviewcontroller

我有一个自定义的Cell类,它包含一个nameLabel和一个gameLabel ..

@property (nonatomic, strong) IBOutlet UILabel *nameLabel;
@property (nonatomic, strong) IBOutlet UILabel *gameLabel;

这两个都是从用户填写并完成命中的单独视图上的协议填充的。然后填充TableView。

为了填充我的tableview上的列表,我有这个

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
PlayerCell *cell = [tableView
                         dequeueReusableCellWithIdentifier:@"PlayerCell"];

Player *player = [self.players objectAtIndex:indexPath.row];
cell.nameLabel.text = player.name;
cell.gameLabel.text = player.game;

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.png"]];

 return cell;
}

我的问题是,当我触摸填充的TableViewCELL但是我收到SigAbrt错误时,我正试图让nameLabel和gameLabel进入UIViewController。继承了我对于单独的段落的代码。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"AddPerson")] {
      UINavigationController *navigationController = segue.destinationViewController;
      PlayerDetailsViewController *playerDetailsViewController =[[navigationController viewControllers] obectAtIndex:0];
      playerDetailsViewController.delegate = self;
  } else if ([segue.identifier isEqualToString:@"ViewPerson"]) {
      NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
      PlayerProfileViewController *dvc = [segue destinationViewController];
      dvc.personName = [players objectAtIndex:indexPath.row];
  }

玩家是我的NSMutableArray,personName是我的目标视图控制器中的NSString以及相应的标签。最后我得到的sigabrt来自我的目标视图控制器中的代码

 -(void)viewDidLoad {
   [super viewDidLoad];
   personLabel.text = personName; <-----WHERE THE SIGABRT TAKES ME

我出错的任何方向都会很棒我还是新的

1 个答案:

答案 0 :(得分:1)

您在prepareForSegue中为personName指定了[players objectAtIndex:indexPath.row]的值。该对象的类是Player,而不是NSString,因此您无法使用它设置标签的文本。我怀疑你想要personName.name(如果你想传递一个Player对象,或者只传递名字而不是Player对象,你应该将名称更改为player或selectedPlayer。)