1

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

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

  • 然后我将一个新的视图控制器(screen2VC)拖到情节提要上。

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

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

  • 在 screen2VC 的视图中,我有一个标签。我将标签控制拖到 vc2SubClass 上以创建一个插座。

  • 我在 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 出口。

有任何想法吗?

4

1 回答 1

1

When you're in performSegue: of vc1, vc2's view hierarchy has not yet been set up. The normal way of doing this is to have a property in vc2 that temporarily is given the string during performSegue:. This property is then used to update the label in vc2's viewWillAppear:.

(When you say "As a test, i placed the 'label1.text = @"screen 2";' code in vc2SubClass but that makes no difference" I'm not sure what's going on there. What method was that code put into?)

于 2012-10-21T17:26:23.307 回答