我读了很多关于委托并尝试过,但没有得到它上班。
你真的试过了什么?您的LoginViewController必须定义一个简单的委托协议,并且您的MainViewController必须符合它。
所有你需要做的就是增加一些像这样的LoginViewController.h以上@interface:
@protocol LoginViewControllerDelegate
- (void)loginViewControllerDidFinish;
@end
它声明一个方法的协议。然后@interface和@end之间补充一点:
@property (nonatomic, assign) id <LoginViewControllerDelegate> delegate;
这意味着你的登录视图控制器将有一个属性叫做委托,它将指向任何类的一个实例(这就是ID装置)符合它的委托协议(介于<和>之间的东西)。不要忘记在.m文件里面输入@synthesize delegate;
。
现在你需要做的是内部MainViewController.h添加到@interface一行:
@interface MainViewController : UIViewController <LoginViewControllerDelegate>
告诉你MainViewController类符合本LoginViewControllerDelegate委托协议的编译器。现在在MainViewController.m中实现- (void)loginViewControllerDidFinish;
方法,并在呈现登录视图控制器模式地将其委托给自己(login.delegate = self;
)之前。当你登录的视图控制器内部完成,您关闭之前,调用委托方法在您委托:
[self.delegate loginViewControllerDidFinish];
就是这样。还有其他问题吗?
谢谢,我做了最多的事情,问题是,我无法设置委托=自我,因为我使用Three20导航器来调用LoginViewController。有任何想法吗? – Kovu
你是指Three20导航仪的实例吗?如果是这种情况,你的界面看起来像'@interface MainViewController:UIViewController'。只要将''添加到该行的末尾即可。 –