使用 3 个 UITableviewcontrollers 作为值列表

Posted

技术标签:

【中文标题】使用 3 个 UITableviewcontrollers 作为值列表【英文标题】:Using 3 UITableviewcontrollers as a list of value 【发布时间】:2014-01-03 13:54:42 【问题描述】:

所以我认为直到今天我才明白如何在 ViewController 之间传递数据。 我有 4 个 UITableViewControllers VC1、VC2、VC3 和 VC4。

在 VC1 中,您可以通过单击槽 VC2 到 VC4 来进行选择。 VC2、VC3 和 VC4 是相互关联的,所以如果您在 VC2 中选择 A,您只会看到 VC3 中与 A 相关的数据,依此类推。

如果你只有 2 个 VC,你通常会这样做:


    SecondViewController *VC2 = [[SecondViewController alloc]init];
    VC2.VC1 = self;  
    [self.navigationController pushViewController:svc animated:YES];

(当然在 VC2 中使用 VC1 作为属性)

但在这种情况下,我想做类似 VC4.VC1 而不是 VC2.VC1 的操作,但这没有任何意义,因为我需要从 VC2 到 VC3 再到 VC4 并在 VC1 中使用这些选定的值。 (在 VC1 中,我使用这些从 VC2、VC3 和 VC4 中选择的值,并添加一些附加信息并将其保存在单独的对象中。

我尝试像这样从 VC4 传回数据:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

 firstViewController *VC1 = [[firstViewController alloc] init];
   .....   
  [VC1 passSelectedVC2:CV2 selectedVC3:VC3 selectedVC4:VC4];

  [self.navigationController popToRootViewControllerAnimated:YES];
  ....
  

但这不起作用。我在passSelectedVC2 方法中添加了NSLOG 来检查,但是所有传递的数据都保持为空(我也不想在didSelectRowAtIndexPath 中使用firstViewController *VC1 = [[firstViewController alloc] init];,因为它感觉不对)

我希望上面说的有点清楚,否则请告诉我。

【问题讨论】:

你不能那样做。您正在实例化一个全新的 VC1,而不是导航堆栈中的那个。而是从堆栈中获取您的 VC1。 [[self navigationController] viewControllers]这是你的导航栈,通过数组索引选择你需要的vc。 嗨,所以使用这个我将使用实际的 VC 而不是创建一个新的? 【参考方案1】:

我认为您刚刚遇到了忽略 MVC 的“M”部分的主要问题。

在这个复杂程度(或更早),我真的建议让您的数据模型成为一个独立的对象,可以作为单例访问,或者从您的应用委托中请求它。这样一来,每个控制器都可以在加载视图时获得所需的信息,而不是依赖于巴洛克式的参数传递和属性更新链。

【讨论】:

嗨,它实际上是一个 MVCS。我正在使用 big nerd 牧场课程作为我的学习项目的基础。现在我想将此数据存储在带有附加信息的单独模型(对象)中,但首先我需要使用 VC2、VC3 和 VC4 选择数据。 (这些 VC 的设置是为了获取/显示相关数据)。也许我需要以不同的方式做到这一点,但我不知道如何。 在我看来,MVCS 是不必要的。它作为 (Ms)VC 更有意义,其中存储是模型内部的一个实现细节,它提供了一部分共享数据。【参考方案2】:

改变firstViewController *VC1 = [[firstViewController alloc] init]; 进入firstViewController *VC1 = [[[self navigationController] viewControllers]objectAtIndex:0]; 解决了我的问题。

【讨论】:

以上是关于使用 3 个 UITableviewcontrollers 作为值列表的主要内容,如果未能解决你的问题,请参考以下文章

尽管 cellForRowAtIndexPath 返回有效单元格,但 UITableView 崩溃

JSON解析迅速,始终捕获语句执行

如何以编程方式设置 UITableViewController 自定义类?

我有一个很棒的 segue 但想改变它的触发器

3 个 .h 和 3 个 .cpp 文件

以编程方式使用自动布局的 3 个等高视图