Как перейти к 2 представлениям на основе сегментированного элемента управления и кнопки «Добавить»? - PullRequest
3 голосов
/ 04 января 2012

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

Здесь мой вопрос:

Как перейти от одного [+] UIButton к одному из двух представлений, отдельному представлению добавления для каждого сегментированного параметра управления. Вы можете подключить только один segue из UIBarButtonItem в раскадровке, но я не был уверен, если я просто подключу один, а затем изменю код где-то или мне придется создавать отдельные файлы xib (с которыми я не знаком, Я новичок в iPhone Dev) или как это будет работать!

Пожалуйста, помогите!

Ответы [ 2 ]

10 голосов
/ 04 января 2012

Вы делаете то, что я называю "общими" segues, которые не связаны с действием / триггером. Смотрите мой ответ здесь: Как создать и использовать универсальный segue

Сделайте 2 из этих segues, затем в вашем методе IBAction для вашего вызова segmentedControl performSegueWithIdentifier:. Например:

- (IBAction)segmentCtrlChanged:(id)sender {
 UISegmentedControl *seg = sender;
 if (seg.selectedSegmentIndex == 0) 
   [self performSegueWithIdentifier:@"segue1" sender:self];
 else if (seg.selectedSegmentIndex == 1) 
   [self performSegueWithIdentifier:@"segue2" sender:self];
}
1 голос
/ 04 января 2012

Вам нужен только один переход в вашей раскадровке. в вашем viewcontroller добавьте

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

и используйте switch, чтобы решить, какой сегмент выбирается.

, например

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    switch (self.segmentedButton.selectedSegmentIndex)
    {
          case 0:
          {
                UIView1 *view1 = (UIView1 *)segue.destinationViewController;
                // do other customization if needed
                break;
          }
          case 1:
          {
                UIView2 *view2 = (UIView2 *)segue.destinationViewController;
                // do other customization if needed
                break;
          }
          default:
               break;
    }
}

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIStoryboardSegue_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIStoryboardSegue

...