重新加载ParentViewController

时间:2010-08-17 13:17:40

标签: iphone parentviewcontroller

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

[self presentmodalviewcontroller:tempcontroller animated:yes];

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

[self.dismissmodalviewcontroller animated:YES];

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

请帮我一些好的教程。如果您可以建议我逐步描述我的需要,那将会很有用。

期待您的帮助....

提前致谢

2 个答案:

答案 0 :(得分:2)

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

sending data to previous view in iphone

答案 1 :(得分:0)

乐,

假设您有一个以模态方式呈现另一个的viewController - 将其称为“root”。

模态称为“模态”

“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];
}

这有意义吗?