从detailViewController获取bool值的最佳方法是什么?

时间:2010-10-08 18:05:50

标签: objective-c cocoa-touch uitabbarcontroller

在我的基于导航的应用程序中,有一个按钮,如果按下该按钮,则会将视图更改为detailViewController。在这里,用户可以设置几个选项。其中一个选项是bool值。当我从detailViewController返回时,我怎么能看到这个bool值是什么?

1 个答案:

答案 0 :(得分:4)

创建protocolDetailViewDelegate?)并在DetailViewController中创建delegate媒体资源。实例化视图控制器时,将delegate属性设置为self并使用该属性将消息发送回主视图控制器。唯一棘手的部分是你需要将delegate属性声明为“assign”,这样就不会在详细视图和主视图之间创建一个retain循环。


DetailViewController.h:

@class DetailViewController; // Forward Declaration.
@protocol DetailViewDelegate
- (void)detailViewController:(DetailViewController *)controller didChangeBool:(BOOL)theBool;
@end

@interface DetailViewController : UIViewController {
    id <DetailViewDelegate> delegate;
}

@property (assign) id <DetailViewDelegate> delegate;

@end

这只是界面,但它应该让你大部分时间都在那里。设置详细信息视图的delegate属性,并在主视图中实现detailViewController:didChangeBool:方法,这就是它。


回答评论中的问题:

  1. 是。在推送详细信息视图控制器之前,将其delegate属性设置为self
  2. 您需要声明主视图控制器实现DetailViewDelegate协议。通过阅读Apple's Documentation了解如何做到这一点。
  3. 在声明主视图控制器将实现协议后,您需要实际实现它。将detailViewController:didChangeBool:方法添加到主视图控制器。