在isKindOfClass比较中准备segue崩溃

时间:2014-07-22 20:26:17

标签: ios objective-c segue

我为segue调用做准备导致崩溃而没有任何错误消息。所以我使用NSLog来跟踪发生了什么。永远不会达到以下行

NSLog(@"The VCs matched!!: " )

这是方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"enter prepare for segue.");
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

    if ([segue.identifier isEqualToString:SegueIdentifierA]) {
        NSLog(@"Destination to match are: %@, %@ .",segue.destinationViewController,[PaperDetailViewController class] );
        if ([segue.destinationViewController isKindOfClass:[PaperDetailViewController class]]) {
            NSLog(@"The VCs matched!!: " );
            PaperDetailViewController *paperDetailView = (PaperDetailViewController *)segue.destinationViewController;

        }else NSLog(@"NO ONO NO match for %@ AND %@.",segue.destinationViewController,[PaperDetailViewController class] );
    }
    NSLog(@"exit prepare for segue.");

}

3 个答案:

答案 0 :(得分:1)

鉴于我可以推荐的信息,您可以在情节提要编辑器中为视图控制器指定类。

enter image description here

答案 1 :(得分:1)

如评论所示,看到堆栈跟踪会很棒。这将提供有价值的线索。没有他们,最可能的罪魁祸首是:

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

盲目地假设发件人是UITableViewCell。如果不是,您肯定会看到崩溃(我们会在堆栈跟踪中看到它)。如果表格选择是触发segue的,那么这样更安全,更容易阅读......

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

答案 2 :(得分:0)

抱歉是误报。我的Xcode似乎出现了问题。 Xcode刚刚崩溃,重新启动后,一切都按预期工作。感谢并且+1给每个人提供帮助。