在prepareForSegue的详细视图中设置属性

时间:2014-05-10 20:00:11

标签: ios objective-c

我使用xCode创建了一个Master / Detail应用程序,并且对它的改动很少。在MasterViewController中的prepareForSegue中,我添加了这个以尝试将一些文本放在详细视图控制器的标签中

MMDetailViewController *detailVC = [segue destinationViewController];
detailVC.testdetail.text = @"test";

我还在故事板上的detailViewController中添加了一个标签,然后控制/拖动到detailViewController以连接它们。

@property (strong, nonatomic) IBOutlet UILabel *testdetail;

因此,当我在prepareForSegue中设置文本时,我希望它在模拟器上运行代码后显示在标签中。但是,它并没有显示出来。你能解释一下原因吗?

2 个答案:

答案 0 :(得分:1)

因为你无法在加载之前更新UILabel ... 所以你需要做的是:

创建Nsstring并更新它的值,然后在viewDidLoad中更新你的标签。

在你的detailViewController.h中添加

@property (strong, nonatomic)NSString *testString;

然后在viewDidLoad中的detailViewController.m中:

- (void)viewDidLoad
{
[super viewDidLoad];
self.testdetail.text = testString;
}
你的masterViewController中的

MMDetailViewController *detailVC = [segue destinationViewController];
detailVC.testString = @"test";

那就是它,现在应该可以工作了:) 快乐的编码

答案 1 :(得分:0)

-viewDidLoad被解雇后,可以访问这些出口。这在-prepareForSegue:中还没有发生,所以你可能会访问一个零值的标签。

相反,使用NSString属性来传递值。将值放入目标-viewDidLoad的{​​{1}}标签中,因为它自己负责这样做。