문제

누군가가 나에게 올바른 방향을 알려줄 수 있기를 바랍니다.

저는 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'라는 다시 로드 메서드를 선언합니다.로그인 뷰 컨트롤러를 표시하기 전에 마스터 뷰 컨트롤러를 loginSuccessEvent의 대리자로 설정하세요.로그인이 성공하면 해제하기 전에 대리자 메서드를 호출합니다.

  2. bool 속성을 설정합니다. isReloadNeeded 앱 대리인에서.마스터 뷰 컨트롤러에서는 viewWillAppear 또는 viewWillAppear 데이터를 다시 로드하려면 이 bool을 확인하세요.로그인 뷰 컨트롤러에서 bool을 yes로 설정하고 마스터 뷰 컨트롤러에서 다시 로드한 후 재설정합니다.

수행할 작업 옵션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>

.중

  1. 인스턴스화 후 및 제시하기 전에 Login View Contoller의 대리자 속성에 대한 대리자로 Main view Controller를 설정합니다.

    loginViewController *login = [[LoginViewController 할당] 초기화];// 인스턴스화 후 및 로그인을 제시하기 전에 대의원을 설정합니다. logindelegate = self;[자신 존재ViewController:로그인];

다시 로드하는 방법 구현

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top