Ios Xcode中的iPad序列错误

Ios Xcode中的iPad序列错误,ios,xcode,ipad,segue,master-detail,Ios,Xcode,Ipad,Segue,Master Detail,这里是noobxcode问题 我有一个基本的主细节设置 当我在主列表中选择一个项目时,它会带来第二个包含详细信息的“主”侧栏,而不是更新详细信息页面 所以我从这个开始: 我点击“Nick Jones”得到以下信息: 情节提要如下所示: 但如果单击主视图控制器,则详图视图控制器的大小将更改为: 我正在尝试将教程“你的第二个iOS应用程序”教程改编为iPad(而不是iPhone)。关键的segue页面是。我已经在导航控制器和细节视图控制器之间重新建立了一个segue链接,因为如果没有它,它几

这里是noobxcode问题

我有一个基本的主细节设置

当我在主列表中选择一个项目时,它会带来第二个包含详细信息的“主”侧栏,而不是更新详细信息页面

所以我从这个开始:

我点击“Nick Jones”得到以下信息:

情节提要如下所示:

但如果单击主视图控制器,则详图视图控制器的大小将更改为:

我正在尝试将教程“你的第二个iOS应用程序”教程改编为iPad(而不是iPhone)。关键的segue页面是。我已经在导航控制器和细节视图控制器之间重新建立了一个segue链接,因为如果没有它,它几乎无法工作,但我显然做得不对


谢谢。

几点观察:

  • 明显的问题是从主视图控制器到局部视图控制器的分段类型。它应该是一个“替换”序列,当您选择该序列并单击属性检查器时,请确保指定“详细信息拆分”的目标:

  • 另一方面,故事板在UI上有点混乱的原因是,在细节视图控制器中有两个分段,一个来自分割视图控制器的细节视图(以及细节场景的方形形状),另一个来自主视图控制器(因此,细节场景的形状不正确、狭窄)。可怜的界面生成器可能坐在那里想“嘿,你是想让我将此场景用作分割视图的细节,还是用作主视图控制器的替代品?!”我前面的观点解决了这一冲突,但这解释了为什么在当前故事板中,细节场景的形状会根据当前选择的场景而改变

  • 如果要这样做,我建议您可能希望从主场景到细节场景的顺序实际上从主场景到导航控制器场景,而不是细节场景本身:

  • 坦白地说,在描述了如何修复segue之后,您不应该使用segue!创建一个空白的新“master detail”项目,看看它能做什么。您会注意到它看起来更像:

  • 如果要将“详细信息视图”控制器更改为其他场景,则您确实只需要从主场景到“详细信息”场景的分段。但您没有这样做。您可能只想告诉“详细信息视图”控制器,它正在查看的对象已更改,并且它应该
    重新加载数据视图控制器本身就是一个表视图,主视图控制器有一个方法,它可以执行以下操作:(a)告诉细节视图控制器它正在查看的细节项;(b)告诉它重新加载数据

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSDate *object = _objects[indexPath.row];
        self.detailViewController.detailItem = object;
    
        [self.detailViewController.tableView reloadData];
    }
    

    你可以用任何一种方法,但我认为后一种方法可能更有意义。

    现在,你的内心深处涌动着深深的感激之情。我现在无法实施你的建议(否则我妻子会非常不高兴),但是+1,盲目地打勾,我可以从你最全面的答案中拼凑出一些东西。对你很好:)我仍然很悲伤,恐怕:(我已经采用了你的无分段方法,但它没有传递数据。自定义方法是
    -(void)tableView:(UITableView*)tableView没有选择rowatindexpath:(nsindepath*)indepath{Student*studentAtIndex=[self.dataController objectInListAtIndex:indexath.row];self.detailViewController.Student=studentAtIndex;[self.tableView reloadData];}
    。我知道studentAtIndex指向了正确的位置,因为如果我输入
    studentAtIndex.firstName=@“Ben”
    ,它更改了主控形状。你能看到错误吗?我应该发布另一个问题吗?谢谢。@Nick我建议仔细检查
    self.detailViewController
    self.detailViewController.tableView
    的值,以确保它们都不是
    nil
    。我知道我曾经花了很多时间调试分割视图g在此之前,我注意到,
    detailViewController
    没有初始化(例如,您需要在
    viewDidLoad
    中初始化它,比如
    self.detailViewController=(detailViewController*)[[self.splitViewController.viewControllers lastObject]topViewController]
    .iOS从来不会在对象指针为
    nil时警告我们
    @Nick只要在代码中设置断点,并通过相关例程,您就会发现它从裂缝中滑出的地方!不过我知道它是有效的,因为我在这里测试了它!成功:)我已经注释了指针的建立位置,正如您所说:
    self.detailViewController=(CRDetailViewController*)[[self.splitViewController.viewControllers lastObject]topViewController];
    再次感谢。