考虑这个视图设置:
我有一个视图控制器,可以在一组子视图之间切换。每个子视图都是一个带有自定义代码的UIView子类。要切换视图,我使用switch语句将新视图分配为currentview。这非常有效。
我现在处于一个我有视图(MainMenu)的位置,其子视图(PopUp)包含一个UITableView。 PopUp视图通过MainMenu.h类的实例方法显示和隐藏。让我们调用方法showPopUp和hidePopUp。
当用户从UITableView中选择一个项目时,他们必须通过单击绑定到hidePopUp方法的关闭按钮手动关闭包含(PopUp)视图。
当用户在UITableView中选择项目时应该发生的事情是hidePopUp方法应该自动触发。
如何通过UITAbleView的didSelectRowAtIndexPath触发hidePopUp实例方法?这是应用代表或NSNotificationCenter的工作吗?我尝试过调用
之类的东西[[[UIApplication sharedApplication] delegate] closePopUp];
从didSelectRowAtIndexPath 无效...
在此先感谢,这可能是我想念的简单事情。流感编程很难!
答案 0 :(得分:1)
有几种方法可以实现这一点,例如通知或通过像app delegate这样的单例工作(虽然使用单例[反]模式并非没有争议)。就个人而言,我会使用代表团。
类似的东西:
@protocol PopUpDelegate
@optional
- (void)Popup:(YourPopUpClass *)popUp didEndWithData:(NSData *)blah;
@end
然后,您可以在MainMenu中实现此协议,将其指定为Popup的委托,让Popup在按下关闭按钮时调用委托的方法,然后从那里关闭弹出窗口。
如果您选择这条路线,这里有一篇关于如何实施代表的精彩文章:How do I create delegates in Objective-C?