логика раскадровки ios - PullRequest
       6

логика раскадровки ios

1 голос
/ 23 января 2012

Допустим, у меня есть три views на моем storyboard.

  • Представление 1 содержит input field и button.
  • input field - это место, где пользователь помещает свой ответ на «2 + 2»
  • Представление 2 содержит сообщение «переходите в первый класс!»
  • Просмотр 3 содержит сообщение «Вы ужасны в математике ..»

Я хочу связать Просмотр 1 и Просмотр 2 с использованием раскадровки, но я хочу запустить логику, когда кнопка нажата View 1 .

Если поле ввода == 4, то вы попадаете в View2 , а если нет, то вы попадаете на Вид 3 .Возможно ли что-то подобное с storyboarding?

1 Ответ

5 голосов
/ 23 января 2012

Да

В раскадровке создайте переход от представления 1 к представлению 2, перетащив его из контроллера контроллера представления 1 в контроллер представления 2. Нажмите на переход и задайте его и идентификатор (например, представление 2).Сделайте то же самое, чтобы создать переход из View 1 в View 3 (укажите его и идентификатор view3).

Затем в коде контроллера view1 добавьте следующий код, когда в методе IBAction для кнопки:

if (input == 4) {
    [self performSegueWithIdentifier: @"view2" sender: self];
} else {
    [self performSegueWithIdentifier: @"view3" sender: self];
}

Кроме того, вы можете использовать метод prepareForSegue для контроллера представления view1, в котором можно установить свойства на контроллерах представления назначения:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"view2"]) 
    {
        [[segue destinationViewController] setManagedObjectContext:self.managedObjectContext];
        [[segue destinationViewController] setSelectedClient:selectedClient];
        [[segue destinationViewController] setAddNoteViewControllerDelegate:self];
    }
    if ([[segue identifier] isEqualToString:@"view3"]) 
    {
        // set properties for view3 view controller
    }
}
...