2012-10-21 177 views
1

我有用于iPad的iOS单视图应用程序并使用故事板。iOS故事板

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

  • 然后,我将一个新的视图控制器(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插座。

任何想法?

+1

只是一个理智的检查。 'label1'和'screen2VC nibfile'中的标签是否连接? – barley

回答

1

当您在vc1的performSegue:中时,vc2的视图层次尚未设置。这样做的正常方法是在vc2中有一个属性,在performSegue:期间临时给出该字符串。此属性然后用于更新vc2的viewWillAppear:中的标签。

(当你说“作为一个测试,我放置'label1.text = @”screen 2“;'代码在vc2SubClass但没有区别”我不知道那里发生了什么。方法是把代码放进去吗?)

+0

Hi-spot on!我没有意识到第二种观点在赛格被调用时尚未初始化。按照你的建议工作。 – auburg