我创建了一个带有 nib 文件的登录视图控制器,如下所示;
//loginVC 是根视图控制器本地方法中的一个局部变量,当用户按下登录按钮时调用该方法
loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
然后我将此登录视图控制器显示为根视图控制器中的模态视图控制器,如下所示;
[self presentViewController:loginVC animated:YES completion:nil];
到目前为止工作正常,但是当我从服务器收到错误响应时,例如未找到(HTTP 响应 404)或另一个 HTTP 服务器或客户端错误响应,我在此模式视图控制器(登录视图控制器)的警报视图中显示此错误消息),这也有效,在此步骤之后,当用户在此警报视图中按下确定按钮时,我将重置视图控制器。我通过以下步骤实现了这一点;
-i 在根视图控制器中定义了一个委托方法,称为 refreshLoginView
-我已经实现了这个方法如下;
-(void)refreshLoginView
{
[self dismissViewControllerAnimated:YES completion:^{
LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
loginVC.delegate = self;
[self presentViewController:loginVC animated:YES completion:nil];
}];
}
-当用户按下警报视图的确定按钮时,将调用此方法,然后将创建一个新的登录控制器,这也可以,但是当用户时,这个新创建的登录视图控制器的提交按钮不响应 UIControlEventTouchUpInside 事件按下提交按钮。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0){
[self.delegate refreshLoginView];
}
}
我的问题是;
我怎样才能刷新这个登录视图控制器(模态视图控制器)?我不确定我的方式是否正确。如果我的方法是正确的,我怎样才能正确刷新 uibutton(提交按钮)?
我的所有控制器(文本字段、标签和按钮)都是可视化创建的,并使用 IBOutlets 连接到 loginview 控制器,如下所示
@property (retain, nonatomic) IBOutlet UIButton *btnSubmit;
@property (retain, nonatomic) IBOutlet UILabel *lblUsername;
@property (retain, nonatomic) IBOutlet UILabel *lblPassword;
@property (retain, nonatomic) IBOutlet UITextField *txtUsername;
@property (retain, nonatomic) IBOutlet UITextField *txtPassword;