【问题标题】:passing data between view controllers in storyboards在情节提要中的视图控制器之间传递数据
【发布时间】:2012-06-02 13:45:03
【问题描述】:

有两个带有嵌入式导航控制器的视图控制器。第一个有一个表格视图。第二个,名为“AfterTableViewController”,里面有一个标签。

我希望能够在第一个视图控制器实现文件中的prepareForSegue 方法中设置标签。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   AfterTableViewController *afc = (AfterTableViewController*) segue.destinationViewController;
    afc.title = @"the title"; // this works
    afc.theLabel.text = @"hello"; // this doesn't work
}

我应该如何设置标签?

【问题讨论】:

    标签: storyboard viewcontroller segue pass-data


    【解决方案1】:

    鉴于您只是尝试设置标签的文本值,最好在 AfterTableViewController 中为此 UILabel 的文本创建另一个 NSString 属性,然后在构造 标签

    【讨论】:

    • 这似乎有效。我在 AfterTableViewController .h 文件中创建了一个字符串属性,并在 prepareForSegue 中为其分配了一个值。然后在 AfterViewController 的 viewDidLoad 方法中,我使用该字符串的值更新了标签的文本。我只是很困惑为什么除了做这个技巧之外我不能改变标签的价值。也许因为它是“弱”,而我定义的字符串属性是“强”。有什么建议吗?
    • 据我所知,在 performSegue 时,您的 UILabel 的 IBOutlet 仍然为零,这就是为什么没有发生任何事情的原因。不过,我真的不会称其为技巧,这是一种相当正常的数据传递方式。
    【解决方案2】:

    您必须确保将 theLabel 添加为 AfterTableViewController 中的(合成)属性才能使其正常工作。

    【讨论】:

    • 已经这样做了。不起作用。这是项目mediafire.com/?8zz3xf2qltzaszd
    • @MiladGhattavi 是已经在情节提要中定义的标签还是由控制器本身创建的标签?您可能还想澄清“不起作用”声明,它怎么不起作用?错误、崩溃、你记录了什么吗?
    • 它位于情节提要中,并在第二个视图控制器的代码中定义为属性。 “不起作用”的事情只是一个评论。为了更好地理解,我在这里添加了它。我用韦斯利的回答解决了这个问题。我会在几分钟后发布我所做的。
    • @MiladGhattavi 啊,因为到那时视图还没有加载......哦! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2016-02-15
    • 1970-01-01
    • 2012-07-17
    • 2014-09-12
    • 2011-07-09
    相关资源
    最近更新 更多