【问题标题】:View Controller Containers查看控制器容器
【发布时间】:2015-10-17 14:09:30
【问题描述】:

我目前正在我的视图控制器中实现一个子视图。在实现我的子视图之前,我的代码会查找导航标题,然后决定输出是什么,这就是我在下面提供的(工作正常)。我现在已经在原始视图控制器中实现了一个容器视图,我希望它可以查找导航标题,例如_TitleLabel 但我不确定我确定在容器视图控制器上放了什么。

self.navigationItem.title = _DetailModal[0];
_TitleLabel.text = _DetailModal [0];

if ([_TitleLabel.text isEqualToString:@"Hello World"]) {
    ActualCode.text = [NSString stringWithFormat: @"%@\r%@\r%@\r%@\r%@\r%@\r%@\r%@\r%@" ,
                 @"Public Class Form1",
                 @"",
                 @"Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click",
                 @"",
                 @"MsgBox(\"Hello World\")",
                 @"",
                 @"End Sub",
                 @"",
                 @"End Class"];
}

【问题讨论】:

  • 您能否编辑您的问题以提供更多背景信息?我不知道您问题中的代码属于哪个方法(甚至是类),并且看起来您的 sn-p 中的大多数代码与问题无关。你到底想做什么?
  • 好吧orignally我有一个简单的表视图数组到一个普通的视图控制器。单击表格视图中的标题时,它会显示其自己的特定视图控制器,此外,我想添加一个容器视图,然后查看表格标题以确定容器中的内容。回顾一下,我希望我的容器视图数组查找前一个视图控制器的导航栏的标题以确定内容。上面的代码在表格视图和第一个视图控制器之间工作。
  • 对于初学者来说,你似乎在以一种非常落后的方式做事。您应该永远不必“查找导航栏的标题”,因为是您自己的代码设置导航栏的标题。您应该已经在某个地方的数据模型中拥有必要的信息。不要将数据存储在视图中。相反,请根据您的数据设置视图的内容。
  • 我有点困惑应该在哪里纠正我的错误,我相信我给自己带来的困难比实际情况要大。您能否提供我的指导,就像我从 Table 获得的单元格一样,这些单元格使用数组,然后填充视图控制器(简单所有工作)我现在已经实现了一个容器视图,我想根据标题填充某些信息主视图控制器,但我不知道如何链接。我可以学习和实施的任何想法、视频或示例。

标签: objective-c containers


【解决方案1】:

我现在已经实现了一个容器视图,我想根据主视图控制器的标题填充某些信息

所以想想你在这里做什么。您正在尝试使用视图控制器标题将信息传递给此容器视图。正如我在评论中指出的那样,将数据存储在视图中是一个坏主意。视图控制器标题从何而来?哪些对象可以访问这些数据?

假设您的 UI 包含一个列出各种项目的表格,以及一个在用户点击表格中的特定行时显示更多信息的详细信息视图。听起来您的容器视图是该详细信息显示的一部分。因此,当用户点击一行时,表格视图控制器应该确定点击了哪一行。然后它从数组中获取对应于点击行的项目,并将该项目传递给详细视图控制器(通常在-prepareForSegue:sender: 中)。详细视图控制器获取该项目并使用它来设置自己的标题,可能在其-viewWillAppear 方法中。此时,它还可以将任何必要的数据(例如标题)交给容器视图。

有时人们用“告诉,不要问”这句话来总结这种方法。也就是说,视图控制器应该向视图提供任何必要的数据,并且视图应该显示它所提供的任何数据,但不应该从任何地方获取这些数据。

【讨论】: