从另一个类调用实例方法

时间:2010-11-28 22:37:58

标签: objective-c

考虑这个视图设置:

alt text

我有一个视图控制器,可以在一组子视图之间切换。每个子视图都是一个带有自定义代码的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

无效...

在此先感谢,这可能是我想念的简单事情。流感编程很难!

1 个答案:

答案 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?