一些代码不在另一个ViewController调用的方法中执行
我的问题
我有一个标准的UIViewController
。 通过按下button,它会加载一个表单模式视图控制器。 当按UIBarButtonItem
解除这个模式视图时,我通过执行下面的方法来调用一个方法:
ViewController *main = [[ViewController alloc] initWithNibName:nil bundle:nil]; [main updateLabel];
在方法-(void)updateLabel
在主ViewController
我设置标签的文本,但标签不会改变。 但我知道函数被调用,因为如果我做一个NSLog(@"Method call test);
而不是label.text = @"Test"
我可以在控制台中看到消息。
我究竟做错了什么? 它必须是我在主ViewController
调用方法的方式,因为我可以在其他地方轻松更改标签。
我想做的事:
closures模式视图控制器时,我想在主视图控制器中调用一个方法,在这种情况下更改标签的文本。
谢谢你的帮助!
你用这个代码创build一个ViewController的新实例,而不是获得你已经拥有的指针。
如果ViewController是呈现模态视图的控制器,那么你可以得到一个指向它的指针,
ViewController *main = self.presentingViewController;
更好的方法是使用委托模式。
以下是devise模式build议
模态视图控制器不应该知道如何解除自身,这是呈现视图控制器的责任。 毕竟,它可能已经以许多不同的方式呈现(模态,popup,推导航)。 使用委托模式,模式视图控制器会告诉它的委托,当条形button被按下时,它应该被解除。 代表,这是呈现视图控制器,然后将驳回模态视图和更新您的问题中提到的标签。