ipad与iphone在storyboard和segues中的差异

时间:2012-01-24 03:45:50

标签: ipad storyboard

这是我的第一个iPad / Storyboard / SplitViewController,它有一个表作为主表,每行是一个单独的文档,用于详细视图。我从Xcode 4.2模板开始。

我让iPhone上半部分工作了。我从tableviewcell上找到一个segue并接到电话:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

由此我可以正确地调出细节视图。

在iPad故事板上,我没有收到预备电话。我试过在masterviewcontroller之间创建一个segue然后尝试了tableviewcell控件但是无法让它调用我的prepareforsegue。

我也尝试过:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"segueDetailIpad" sender:nil]; 
}

这将调用我的Segue,但tableview没有设置indexPath。 (虽然它设置在iPhone上。)

此外,当我切换回iPhone版本时,它想要调用相同的performseguewithidentifier(如上所述),但是我必须在不同的@“segueDetailIpad”参数之间切换。

在我看来,我正在混合“旧”和“新”模型,需要找到一些方法 让iPad使用segue而不是依赖didSelectRowAtIndexPath。

希望这足以提出一些建议; - )

THX!

1 个答案:

答案 0 :(得分:0)

正如user589310所说,我可以通过在[segue destinationViewController]中嵌入UINavigationController来解决我的类似问题。

例如:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] class] == [UINavigationController class])
    {
        [[[[segue destinationViewController] viewControllers] objectAtIndex:0] setDelegate:self];
    }
    else
        [[segue destinationViewController] setDelegate:self];
}