我有一个隐藏按钮的父视图,以及一个取消隐藏该按钮的方法。该父视图有一个模态视图,我需要在其中调用隐藏按钮的方法。
ParentViewController.m
- (void)unhideButton {
myButton.hidden = NO;
NSLog(@"Unhide");
}
ModalViewController.m
- (void)levelComplete {
ParentViewController *controller = [[ParentViewController] alloc] init];
[controller unhideButton];
[controller release];
}
NSLog消息Unhide
已成功显示在控制台中,但当我关闭模态视图控制器时,该按钮仍处于隐藏状态。我做错了什么?
答案 0 :(得分:1)
模态视图控制器具有对使用parentViewController
属性显示的视图控制器的自动引用。所以你可以直接说,
[self.parentViewController unhideButton];
levelComplete
方法中的。
但是,是的,创建一个新实例并在其上调用方法不会像Ryan所说的那样影响原始实例。
答案 1 :(得分:0)
为什么ModalViewController可能是由ParentViewController实例提供的,它实例化了一个 new ParentViewController?我认为你需要做的是在创建时将现有的ParentViewController引用传递给ModalViewController,然后在ModalViewController中它可以在parent按钮上设置隐藏属性。
如果您想遵循良好的设计实践,ParentViewController需要将其按钮的管理委托给ModalViewController。 ParentViewController将符合一个简单的协议,暴露按钮,并在呈现之前将自己设置为ModalViewController的委托。