【问题标题】:Passing data from UIViewController to 1 back UIViewController将数据从 UIViewController 传递到 1 返回 UIViewController
【发布时间】:2012-02-26 03:16:14
【问题描述】:

所以我有这个 UINavigationController,我第一次移动到下一个视图,而不是我想点击“返回”按钮并返回第一个视图,其中包含我保存到“strAddress”中的数据第二种观点。我想在“lblShowStr.text”的第一个视图上显示数据。

我怎样才能做到这一点?我搜索了整个网络,找到了一些人写的,但无法理解他们在那里被告知的内容。

谢谢!

【问题讨论】:

    标签: iphone objective-c ios xcode uinavigationcontroller


    【解决方案1】:

    您可以通过以下方式获取对导航堆栈中前一个 viewController 的引用:

    NSArray *viewControllers = self.navigationController.viewControllers;
    MyViewControllerClass *previousController = [viewControllers objectAtIndex:[viewControllers count] - 2];
    

    然后您可以在“上一个”视图控制器上设置一个属性来存储您的文本,甚至可以像这样直接设置标签插座的文本:

    previousController.lblShowStr.text = self.strAddress;
    

    这不是最好的方法(最好的方法是创建自定义委托协议或使用 NSNotificationCenter),但它是最简单的方法。

    【讨论】:

      【解决方案2】:

      在您的第一个视图控制器中,您可能有一个名为 strAddress 的 NSString 属性。 每次视图出现时,你都会将该字符串放入 lblShowStr.text 中。

      在您的第二个视图控制器中,您可能有一个指向视图控制器实例的属性。当您实例化您的第二个视图控制器时,您可以将其上的属性分配给第一个视图控制器。

      secondViewController.firstViewController = self; 要么 [secondViewController setFirstViewController:self];

      然后当用户按下后退按钮时,viewDidAppear 将被调用以获取第一个视图并更新字符串。

      我假设您不想将此数据存储在其他任何地方,例如在您的模型或 nsuserdefaults 等中。

      【讨论】:

      • 是的,我不想将数据存储在任何地方。无论如何,非常感谢。我想通了!
      猜你喜欢
      • 2020-10-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2020-10-08
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多