【问题标题】:iOS storyboardsiOS 故事板
【发布时间】:2012-10-11 14:23:48
【问题描述】:

我有一个适用于 iPad 并使用情节提要的 iOS 单视图应用程序。

  • 我有由 xcode (vc1) 创建的默认视图控制器。一世 在其视图上放置一个按钮。

  • 然后我将一个新的视图控制器 (screen2VC) 拖到 故事板。

  • 我还新建了一个视图控制器子类(vc2SubClass)

  • 我通过身份检查器将 screen2VC 关联到这个子类。

  • 在 screen2VC 的视图中,我有一个标签。我控制拖拽标签到 vc2SubClass 创建一个 outlet。

  • 我在 vc1 的按钮和 vc2 的按钮之间创建了一个 segue。

  • 在 performSegue 覆盖中我有以下代码:

if ([segue.identifier isEqualToString:@"segue1"])
{
    screen2VC* vc = [segue destinationViewController];
    vc.label1.text = @"screen 2";
}

当我运行代码并按下按钮时,segue 可以正常工作并在两个视图之间进行转换,但 screen2VC 的标签从未设置为“屏幕 2”。作为测试,我将label1.text = @"screen 2"; 代码放入了vc2SubClass,但这并没有什么不同。似乎 screen2VC 和 vc2SubClass 之间仍然没有关联,即使前者是后者的子类并且标签指向 UILabel 出口。

有什么想法吗?

【问题讨论】:

  • 只是一个健全的检查。 label1screen2VC nibfile 中的标签是否连接?

标签: ios storyboard uistoryboard


【解决方案1】:

当你在vc1的performSegue:时,vc2的视图层次还没有建立起来。执行此操作的正常方法是在 vc2 中有一个属性,该属性在performSegue: 期间临时被赋予字符串。然后使用这个属性来更新 vc2 的viewWillAppear: 中的标签。

(当您说 “作为测试时,我将 'label1.text = @"screen 2";' 代码放在 vc2SubClass 中,但这没有区别” 我不确定发生了什么在那里。那段代码是用什么方法输入的?)

【讨论】:

  • 嗨,现场!我没有意识到在调用 segue 时第二个视图尚未初始化。按照您的建议工作。
猜你喜欢
  • 2012-08-22
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2020-01-03
  • 2011-12-28
相关资源
最近更新 更多