viewWillAppear и viewDidLoad для представления всплывающего окна входа в систему - PullRequest
4 голосов
/ 31 мая 2011

У меня есть UIViewController, в котором он должен вызвать LoginViewController, если пользователь еще не вошел в систему.Вопрос в том, где я должен назвать это:

LoginViewController* lvc = [[LoginViewController alloc] init];
    lvc.delegate = self;
    //[lvc setModalPresentationStyle:UIModalPresentationFullScreen];
    [self presentModalViewController:lvc animated:NO];
    [lvc release]; 

это должно быть в viewDidLoad или в viewWillAppear?Я думаю, что имеет смысл поместить его в viewWillAppear?Я попытался поместить его в viewDidLoad, и это дает мне дополнительную границу слева и справа от представления.Почему это так?

ОБНОВЛЕНИЕ:

То, что я пытаюсь сделать здесь, - это вызвать presentModalViewController для DetailViewController для UISplitViewApplication.Однако ничего не происходит, когда я так делаю.Я попытался создать новый свежий проект UISplitViewApplication, и все же он не работал.Вопрос почему?и как мне представить модальное представление в viewWillAppear UISplitViewApplication

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Я бы поместил что-то подобное в AppDelegate.

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    [self.window addSubview:self.viewController.view];
    [self.window makeKeyAndVisible];    

    // Show the login screen if the user hasn't logged in yet
if (... login check here...)
  {
    LoginViewController* loginController = [[LoginViewController alloc] init];
    [self.viewController presentModalViewController:loginController animated:NO];
    [loginController release];
  }
}

Ваш экран входа в систему будет размещен поверх обычного viewcontroller.После успешного входа в систему закройте LoginViewController, и ваш пользователь сможет начать использовать ваше приложение.

0 голосов
/ 31 мая 2011

Модальное окно пытается инициализировать себя относительно контроллера представления, который его вызвал (например, изменяя размер пера). Создание и отображение его в родительском viewDidLoad может иногда давать неверную информацию, так как родительский процесс все еще сам загружается. Вот почему вы видите расхождения. Представление модального контроллера в viewDidAppear лучше в этом случае, так как все параметры готовы к передаче модальному контроллеру, чтобы он мог правильно загрузить свой собственный вид. Хотя иногда, если вам нужно много загружать, даже этого недостаточно, и вам придется подождать дольше, прежде чем вы сможете представить свой модальный вид (который совсем не похож на ваш случай, поэтому не о чем беспокоиться) там). Я надеюсь, что это помогает, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...