打开segue时无法识别的实例选择器

时间:2014-07-05 15:39:01

标签: ios uinavigationcontroller segue

我的应用目前有以下布局:

导航控制器 - > UIViewController - > UIViewController - >的UIViewController

我可以使用segue在控制器之间移动。

当我尝试在控制器之间传递一些数据时,会出现问题。

从第一个视图控制器转到第二个视图控制器时,这个工作正常。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [self performSegueWithIdentifier:@"OpenMatch" sender:nil];

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"OpenMatch"]) {
        NSIndexPath *indexPath = [self.matchesListView indexPathForSelectedRow];
        SingleMatchViewController *destViewController = segue.destinationViewController;
        MatchData *match = [self.matchesArray objectAtIndex:indexPath.row];
        destViewController.matchId = match.objectId;
        destViewController.matchTitle = match.matchDescription;
    }
}

现在从第二个到第三个uiviewcontroller我有类似的代码:

- (IBAction)openStats:(id)sender {
    [self performSegueWithIdentifier:@"OpenStats" sender:nil];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"OpenStats"]) {
        MatchStatsViewController *destViewController = segue.destinationViewController;
        NSLog(@"Opening stats for match : %@",self.matchId);
        destViewController.matchId = self.matchId;
        destViewController.matchTitle = self.matchTitle;
    }
}

它给了我这个错误:

 -[UIViewController setMatchId:]: unrecognized selector sent to instance 0x9ba72a0

目标控制器中的属性声明如下:

@property NSString*  matchId;
@property NSString*  matchTitle;

当最后两行被注释掉时,它会通过。所以问题在于destViewController.matchId

你可以帮我吗?

感谢。

1 个答案:

答案 0 :(得分:2)

请注意,错误显示[UIViewController setMatchId:],而不是[MatchStatsViewController setMatchId:]。您可能忘记将第三个控制器的类更改为故事板中的自定义类。