我有一个自定义的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
我出错的任何方向都会很棒我还是新的
答案 0 :(得分:1)
您在prepareForSegue中为personName指定了[players objectAtIndex:indexPath.row]的值。该对象的类是Player,而不是NSString,因此您无法使用它设置标签的文本。我怀疑你想要personName.name(如果你想传递一个Player对象,或者只传递名字而不是Player对象,你应该将名称更改为player或selectedPlayer。)