从模态视图中隐藏父视图中的按钮?

时间:2011-06-26 21:14:19

标签: iphone objective-c cocoa-touch uiviewcontroller uibutton

我有一个隐藏按钮的父视图,以及一个取消隐藏该按钮的方法。该父视图有一个模态视图,我需要在其中调用隐藏按钮的方法。

ParentViewController.m

- (void)unhideButton {
    myButton.hidden = NO;
    NSLog(@"Unhide");
}

ModalViewController.m

- (void)levelComplete {
    ParentViewController *controller = [[ParentViewController] alloc] init];
    [controller unhideButton];
    [controller release];
}

NSLog消息Unhide已成功显示在控制台中,但当我关闭模态视图控制器时,该按钮仍处于隐藏状态。我做错了什么?

2 个答案:

答案 0 :(得分:1)

模态视图控制器具有对使用parentViewController属性显示的视图控制器的自动引用。所以你可以直接说,

[self.parentViewController unhideButton];
levelComplete方法中的

但是,是的,创建一个新实例并在其上调用方法不会像Ryan所说的那样影响原始实例。

答案 1 :(得分:0)

为什么ModalViewController可能是由ParentViewController实例提供的,它实例化了一个 new ParentViewController?我认为你需要做的是在创建时将现有的ParentViewController引用传递给ModalViewController,然后在ModalViewController中它可以在parent按钮上设置隐藏属性。

如果您想遵循良好的设计实践,ParentViewController需要将其按钮的管理委托给ModalViewController。 ParentViewController将符合一个简单的协议,暴露按钮,并在呈现之前将自己设置为ModalViewController的委托。