2013-05-08 1 views
-1

Я хочу создать экран «Условия», который появляется в первый раз, когда приложение открыто. С этой точки зрения я хотел бы добавить кнопку с надписью «согласен», и при нажатии его код будет выполняться:iOS и xcode: как создать modal segue для специального вида только при первом использовании приложения

[self dismissViewControllerAnimated:YES completion:nil]; 

... и пошел бы на первый взгляд приложения.

В настоящее время я использую контроллер панели вкладок, который имеет 4 ViewControllers. Поэтому в основном, мне просто нужно иметь некоторый метод в viewWillAppear на моем первом ViewController, который проверяет значение ключа NSUserDefault:. При первом открытии приложения он будет равен нулю. После того, как они нажимают кнопку «Согласен», я поставлю ее в 1, и бит кода никогда не будет выполнен снова.

Можете ли вы предложить некоторый код для выполнения задачи маршрутизации представления из представления firstViewController на этот альтернативный контроллер представления при загрузке приложения?

Спасибо!

+0

Что именно вы называете «этим альтернативным контроллером вида»? Почему бы вам просто не использовать alertview для отображения одноразового сообщения? –

+0

Я никогда не использовал alertview ... Как мне его инициировать? Есть ли способ сделать так, чтобы пользователь не мог продолжить, не нажав «согласен» с этим предупреждением? Если да, это мой ответ, который я ищу! – jake9115

ответ

1

В методе viewWillAppear в вашем FirstViewController проверьте NSUserDefaults, а затем представите свой TermViewController. После того, как пользователь нажмет согласен в TermsViewController, набор NSUserDefaults затем вызвать

[self.presentingViewController dismissModalViewControllerAnimated:YES] 
+0

Звучит здорово, но как заставить FirstViewController начать модальное представление? Единственный способ, которым я знаю, как создать новое представление в раскадровке и щелкнуть мышью по кнопке: «Я хочу, чтобы это модальное представление появлялось в первый раз, когда приложение запускается без всякого щелчка пользователем чего-либо чтобы попасть туда – jake9115

+2

перетащите ссылку из FirstViewController в TermViewController, введите идентификатор segue, называемый showTerms, затем в вызове FirstViewController [self performSegueWithIdentifier: @ "showTerms" отправитель: nil]; – ltebean

+0

Удивительно, спасибо за предложение. Следующий вопрос: у меня есть TabBarController, а первая панель вкладок отображает ссылки на FirstViewController. В viewDidLoad моего FirstViewController я разместил следующий код: [self performSegueWithIdentifier: @ "myModalSegue" отправитель: self]; я хочу перейти на этот segue, когда загружается первое представление, но я получаю эту ошибку: попытайтесь представить в , чей вид не находится в окне иерархии! Любая идея как это исправить? – jake9115

1

Использование окна поповера может усложниться. Попробуйте следующее: если у вас мало опыта с Objective-C.

- (void)viewDidLoad { 

    if ([termsvalue == 0]) { 
     NSString *msg = [NSString stringWithFormat:@"Do you agree with the terms of use?"]; 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"- Confirmation -" 
                 message:msg 
                 delegate:self 
               cancelButtonTitle:@"Disagree" 
               otherButtonTitles:@"I agree", nil]; 
     [alert setTag:100]; 
     [alert show]; 
    } 
} 

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView { // Validation 
if ([alertView tag] == 100) { 
    return YES; 
} 
} 

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { // Go 
if ([alertView tag] == 100) { 
    if (buttonIndex == 1) { 
     // The user has agreed 
    } 
} 
}