Iphone 将父视图中的按钮从其模式视图中隐藏?
我有一个带有隐藏按钮的父视图,以及一个取消隐藏该按钮的方法。父视图有一个模态视图,我需要在其中调用隐藏按钮的方法 ParentViewController.mIphone 将父视图中的按钮从其模式视图中隐藏?,iphone,objective-c,cocoa-touch,uiviewcontroller,uibutton,Iphone,Objective C,Cocoa Touch,Uiviewcontroller,Uibutton,我有一个带有隐藏按钮的父视图,以及一个取消隐藏该按钮的方法。父视图有一个模态视图,我需要在其中调用隐藏按钮的方法 ParentViewController.m - (void)unhideButton { myButton.hidden = NO; NSLog(@"Unhide"); } - (void)levelComplete { ParentViewController *controller = [[ParentViewController] alloc] in
- (void)unhideButton {
myButton.hidden = NO;
NSLog(@"Unhide");
}
- (void)levelComplete {
ParentViewController *controller = [[ParentViewController] alloc] init];
[controller unhideButton];
[controller release];
}
ModalViewController.m
- (void)unhideButton {
myButton.hidden = NO;
NSLog(@"Unhide");
}
- (void)levelComplete {
ParentViewController *controller = [[ParentViewController] alloc] init];
[controller unhideButton];
[controller release];
}
NSLog消息
Unhide
已成功显示在控制台中,但当我关闭模态视图控制器时,按钮仍然隐藏。我做错了什么?为什么可能由ParentViewController实例提供的ModalViewController实例化了一个新的ParentViewController?我认为您需要做的是在创建时将对现有ParentViewController的引用传递给ModalViewController,然后在ModalViewController中,它可以在parents按钮上设置hidden属性
如果要遵循良好的设计实践,ParentViewController需要将其按钮的管理委托给ModalViewController。ParentViewController将遵循一个简单的协议,公开按钮,并在显示它之前将自己设置为ModalViewController的代理。模态视图控制器自动引用使用
ParentViewController
属性显示的视图控制器。所以你可以直接说,
[self.parentViewController unhideButton];
在levelComplete
方法中
但是,是的,创建一个新实例并对其调用该方法不会像Ryan所说的那样影响原始实例。按钮隐藏在哪里?这可能会再次被调用。我已将其设置为隐藏在界面生成器中。请阅读,它将引导您了解委托的概念,如何在cocoa中使用它,以及如何在对象中实现它。委托是贯穿cocoa的两种主要模式之一。这是掌握mac和iphone编程的关键。确保你真正理解它。这就是你一直在寻找的答案。