1

我希望有人能指出我正确的方向。

我有 2 个控制器,MasterViewController(显示大量数据)和 LoginViewController(登录用户并获取该数据)。

MasterViewController 是根控制器。我在顶部有这段代码来检查用户是否已登录。如果他们已登录,则调用 loadView 方法,否则将它们带到登录视图控制器。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDictionary *session = [Global getSession];
    if(!session){

        // Not logged in.
        LoginViewController *loginViewController = [LoginViewController alloc];
        [self.navigationController presentViewController:loginViewController animated:YES completion:nil];

    }else{
        [self loadView];
    }
}

一旦他们登录,我就有了这段代码,用这段代码将他们带回 MasterViewController:

[self dismissViewControllerAnimated:NO completion:nil];

问题是 MasterViewController 根本没有加载。在用户被带回视图之前,我如何重新调整整个视图?

谢谢,彼得

4

1 回答 1

1

有不同的方法。

  1. 使用委托,并在主视图控制器中声明重新加载方法,例如“reloadData”。在呈现登录视图控制器之前,将主视图控制器设置为 loginSuccessEvent 的委托。一旦登录成功,在关闭它之前调用委托方法。

  2. isReloadNeeded在应用程序委托中设置布尔属性。在主视图控制器中,viewWillAppearviewWillAppear检查此布尔值以重新加载数据。从登录视图控制器将布尔值设置为是,并在主视图控制器中重新加载后重置。

待办事项 选项1:

定义交互协议

@protocol LoginDelegate

   -(void) loginSuccessPostProcess;

@end

在登录视图控制器中。

.h 文件 --> 声明一个属性

@property (weak) id< LoginDelegate> loginDelegate;

.m --> 登录成功后关闭前调用委托方法

//Login Success
[self. loginDelegate loginSuccessPostProcess];
[self dismissViewControllerAnimated:YES completion:nil];

主视图控制器 --> 实现方法。

.h --> 采用协议

  @interface mainViewCOntroller < LoginDelegate>

.m

  1. 在实例化之后和呈现之前将主视图控制器设置为登录视图控制器中委托属性的委托

    loginViewController *login = [[LoginViewController alloc] init]; //在实例化之后和呈现之前设置你的委托 login.loginDelegate = self; [自我presentViewController:登录];

实现重新加载的方法

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
于 2014-06-03T15:30:47.723 回答