一些代码不在另一个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; 

更好的方法是使用委托模式。

https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Delegation.html

以下是devise模式build议

模态视图控制器不应该知道如何解除自身,这是呈现视图控制器的责任。 毕竟,它可能已经以许多不同的方式呈现(模态,popup,推导航)。 使用委托模式,模式视图控制器会告诉它的委托,当条形button被按下时,它应该被解除。 代表,这是呈现视图控制器,然后将驳回模态视图和更新您的问题中提到的标签。