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

我有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根本没有加载。如何重新调整在用户返回视图之前的整个视图?

谢谢, 彼得

有帮助吗?

解决方案

有不同的方式。

  1. 使用委托,并声明主视图控制器中的重新加载方法说'reloaddata'。在呈现登录视图控制器之前,将主视图控制器设置为logingSuccessEvent的委托。在解雇它之前,登录成功后,请调用委托方法。

  2. 设置app委托的bool属性,isReloadNeeded。在主视图控制器中,viewWillAppearviewWillAppear检查该BOOL以重新加载数据。从登录视图控制器将BOOL设置为Yes,并在主视图控制器中重新加载后重置。

  3. 要做option1:

    定义用于交互的协议

    @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. 将主视图控制器作为登录查看Consler在实例化之后的代表属性,并在呈现它之前

      loginviewcontroller * login= [[loginViewController Alloc] init]; //在实例化后和在提出之前设置委托 login.logindelegate= self; [SELE PRIVIEWVIEWCONTROLLER:登录];

    2. 实现刷新方法

       -(void) loginSuccessPostProcess
       {
              //Your Method.
        }
      
      .

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top