2

Noob Xcode 问题在这里。

我有一个基本的主从设置。

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

所以我从这个开始:

我点击“尼克琼斯”并得到这个: 在此处输入图像描述

故事板如下所示: 在此处输入图像描述

但是,如果我单击主视图控制器,详细视图控制器将大小更改为: 在此处输入图像描述

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

谢谢。

4

1 回答 1

3

几点观察:

  1. 明显的问题是从主视图控制器到详细视图控制器的转场类型。它应该是一个“替换”segue,当您选择该 segue 并单击属性检查器时,请确保您指定了“详细拆分”的目标:

    细节分割

  2. 顺便说一句,故事板在 UI 上有点混乱的原因是,您在该细节视图控制器中有两个 segue,一个来自拆分视图控制器的细节视图(因此细节的方形形状场景),另一个来自主视图控制器(因此是细节场景的不正确的狭窄形状)。可怜的 Interface Builder 可能正坐在那里想“嘿,你想让我使用这个场景作为拆分视图的细节,还是作为主视图控制器的替代品?!?” 我之前的观点解决了这个冲突,但这解释了为什么在您当前的故事板中,细节场景的形状会根据您当前选择的场景而变化。

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

    转到导航控制器

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

    在此处输入图像描述

如果您将细节视图控制器更改为不同的场景,您真的只想要从主场景到细节场景的转场。但你没有那样做。您可能只想告诉细节视图控制器它正在查看的对象已更改并且应该更改reloadData。鉴于您的详细信息视图控制器本身是一个表格视图,主视图控制器将有一个方法可以执行以下操作:(a)告诉详细信息视图控制器它正在查看的详细信息项;(b) 告诉它reloadData。所以它可能看起来像:

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

    [self.detailViewController.tableView reloadData];
}

你可以让它工作,但我认为后一种方法可能更有意义。

于 2012-12-09T03:19:42.033 回答