0

我有一个 iPhone 应用程序,我在其中使用模式视图显示设置页面

[self presentmodalviewcontroller:tempcontroller animated:yes];

当用户完成设置后,他可以返回上一页。

[self.dismissmodalviewcontroller animated:YES];

现在我想在用户从设置页面返回时重新加载我的主页。我读了一些我应该使用@protocol and delegate的地方。我已经浏览了网络上关于这个主题的一些教程。但我无法做到这一点。我不知道,@protocol and delegate因为我是 iPhone 开发的新手。

请帮助我一些好的教程。如果您能建议我任何链接逐步描述我的需求,那就太好了。

期待您的帮助......

提前致谢

喜悦

4

2 回答 2

2

另一个更简单的选择是使用NSNotificationCenter. 看看这个

将数据发送到 iphone 中的上一个视图

于 2010-08-17T14:12:39.727 回答
0

喜悦,

假设您有一个 viewController 正在呈现另一个模态 - 称之为“root”。

模态被称为“模态”

“根”会说,

[self presentModalViewController:Modal];

那么 Root 是如何知道何时关闭 Modal 的呢?做到这一点的最好方法是为这种行为制定一个“协议”。

在 Modal 的头文件中,会有这样的代码:

@protocol ModalViewDelegate <NSObject>

-(void)modalViewControllerDidFinish:(UIViewController *)viewController;

@end

然后,应该有一个模态的实例变量:

id<ModalViewDelegate> delegate;

有一个属性:

@property (assign) id<ModalViewDelegate> delegate;

这使得每次 Modal 向它的属性 'delegate' 发送消息时,我们都知道它具有方法 -(void)modalViewControllerDidFinish:

因此,假设在 Modal 中有一个您想要关闭它的按钮。按钮只需要调用[delegate modalViewControllerDidFinish:self];

在 root 的头文件中,您可以像这样声明该类:

@class Root : UIViewController <ModalViewDelegate>

你实现了 modalViewControllerDidFinish 方法,如下所示:

-(void)modalViewControllerDidFinish:(UIViewController *)controller {
    // any action you need to take on controller
    [self dismissModalViewControllerAnimated:YES];
}

这有意义吗?

于 2010-08-17T14:03:55.957 回答