0
在我的导航的应用程序,有一个按钮,如果按下,将视图更改为detailViewController。这里用户可以设置几个选项。其中一个选项是bool值。当我从detailViewController返回时,我怎么能看到这个布尔值是什么?从detailViewController获取布尔值的最佳方式是什么?
在我的导航的应用程序,有一个按钮,如果按下,将视图更改为detailViewController。这里用户可以设置几个选项。其中一个选项是bool值。当我从detailViewController返回时,我怎么能看到这个布尔值是什么?从detailViewController获取布尔值的最佳方式是什么?
创建一个protocol(DetailViewDelegate
?)并在您的DetailViewController
中创建一个delegate属性。当您实例化视图控制器时,请将委托属性设置为self
,并使用该属性将消息发送回您的主视图控制器。唯一棘手的部分是您需要将委托属性声明为“assign”,以便您不会在详细视图和主视图之间创建保留循环。
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:
方法,就是这样。
为了回答您的评论的问题:
delegate
属性设置为self
。detailViewController:didChangeBool:
方法添加到您的主视图控制器。
你可以展示一些关于如何做到这一点的代码? – 2010-10-08 22:42:07
第二行的目的是什么?它真的有必要吗?我在“detailViewController”之前收到一个错误消息,说“Expected”)' – 2010-10-09 00:15:50
这不是必须的,它是为你的委托对象声明一个正式的接口,除非你有充分的理由去除它,但你应该把它作为一个调试它确保你的委托实现所有你认为将要实现的方法我编辑了代码以使警告消失 – kubi 2010-10-09 01:15:24