父视图控制器中的childViewControler
变量需要指向 segue 创建的子视图控制器类的实例。如果你不给它分配任何东西,它就是nil
,并且任何给它的消息什么都不做。
从您发布的代码中不清楚它是属性、实例变量还是局部变量;这是使用实例变量执行此操作的方法:
@implementation ParentViewController
{
ChildViewController *childViewController;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// if you have multiple segues, check segue.identifier
// so you only do this for the correct segue
childViewController = segue.destinationViewController;
}
- (void)buttonPressed
{
childViewController.textViewName.text=@"something";
}
@end
关键在于prepareForSegue:sender:
——您需要确保childViewController
变量指向由 segue 创建的视图控制器。
您的问题也可能是由于仍然有一些旧的故事板代码alloc
和init
子视图控制器并将其放入您的childViewController
变量中。在这种情况下,您将拥有该视图控制器类的两个实例:由 segue 创建的一个和您创建的一个。只有由 segue 创建的一个被连接到 UI 中,因此您对另一个所做的任何更改都将不可见。您可以通过摆脱创建和呈现子视图控制器的任何代码来解决这个问题——故事板现在负责所有这些,并且prepareForSegue:sender:
是您唯一需要获取对子视图控制器的引用的地方。