2012-04-02 2 views
0

В настоящее время используется Xcode 4.2, и у меня есть два контроллера вида (1 и 2). У меня есть несколько текстовых полей в viewcontroller1, которые необходимо заполнить, прежде чем пользователь сможет нажать кнопку «Далее», а затем перейти к viewcontroller2. У меня есть alertdialogs, которые появляются, если пользователь не заполнил все текстовые поля.Нажмите на новый контроллер просмотра, только если текстовые поля верны

Я использовал раскадровки, чтобы непосредственно перейти на нажатие кнопки, которая работает отлично, за исключением, если текстовые поля пусты, мой alertdialog всплывает, но контроллер представления по-прежнему изменяется на номер 2.

Как я сделать так, чтобы только если выполняются мои инструкции if/else, следующая кнопка переходит к следующему контроллеру представления.

Я использую контроллер навигации для управления контроллерами представления.

Я попытался поместить следующий код в если/другое заявление, но это не сработало:

UIViewController *secondViewController = [[SecondViewControllerClass alloc] initWithNibName:@"<name of xib>" bundle:nil]; 
[self presentModalViewController:secondViewController animated:YES]; 

Теперь было несколько вещей, которые я не был уверен, пытаясь выяснить, как использовать этот метод. Нужно ли импортировать SecondViewController.m в верхней части firstviewcontroller.m?

ответ

0

У NSString есть полезное свойство: length, которое будет возвращать нуль, если текстовое поле не содержит текста. Если вам нужно проверить, звоните:

if (!myTextField.text.length) { 
    //no text in the box 
} 
0

достаточно просто, так как вы уже создали для предупреждений коробки всплывал, если что-то не так с входом текстового поля, убедитесь, что окно предупреждения показать код/​​инициализации находится перед код, который изменяет вид и делает это:

if(//something is wrong with the textbox input) 
{ 
    UIAlertView* alert = [[UIAlertView alloc] initWith... 
    [alert show]; 

    //Add a return! If the method is not IBAction or void, just return nil 
    return; 
} 

Voila!

+0

Спасибо, но я не могу сказать, помогает ли это, потому что я не могу получить код, чтобы заставить контроллер вида перейти к следующему контроллеру представления. Почему бы не работать над этим кодом, чтобы открыть новый контроллер? – spudsta

+0

Все, что я действительно хочу сказать, это добавить возврат в код, где вы определяете, что есть ошибка. Таким образом, если все проверяется, оно все равно должно доходить до того, что вы инициализируете новое представление и представляете его. Что касается вашего кода, который его представляет, я не вижу ничего, что могло бы заставить его работать не так, как вы пытаетесь представить его с помощью анимации, но никогда не указываете анимацию. Помимо того, что действительно не должно быть проблемой, я не вижу ничего плохого. – David

+0

Есть ли проблема, если навигационный контроллер и все другие «нажатые» выполняются через раскадровку, а затем я пытаюсь сделать это с помощью кода только с помощью этого одного диспетчера представлений? Есть ли что-нибудь, что мне нужно для импорта или объявления в файлах .h или .m, которые обычно выполняются раскадрой? – spudsta

Смежные вопросы