如何在-prepareForSegue中使用属性?

时间:2012-01-07 02:19:38

标签: objective-c xcode

这是我的代码,发布在view1:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([segue.identifier isEqualToString:@"toLevels"])
    {
        levelViewController *vc = [segue destinationViewController];

        vc.currentEnchantmentSelected = self.title;
    }
}

这不会将“self.title”的值发送到“levelViewController”中的变量。为什么是这样?如果我使用字符串,它会发送它。

修改(levelViewController):

@synthesize enchantment = _enchantment;
- (enchantmentViewController *)enchantment
{
    if (!_enchantment){
        _enchantment = [[enchantmentViewController alloc] init];
    }
    return _enchantment;
}

@property enchantment在标题中声明。

1 个答案:

答案 0 :(得分:1)

因此,从聊天开始,问题是您在didSelectRowAtIndexPath:中设置了此属性,实际上在 prepareForSegue:sender:之后使用故事板调用。 (当segue连接到表格中的单元格时)

所以解决方案就是直接在prepareForSegue:sender:中完成这项工作。 sender将是被点击的单元格。如果您需要该单元格的indexPath,您可以使用:

[self.tableView indexPathForSelectedRow]

祝你好运。