2013-08-04 2 views
2

Привет, Там я создаю приложение с использованием табличных представлений в раскадровки, и до сих пор я могу заполнить таблицу, я установил ее для создания 4 ячеек и нажал один и тот же контроллер представления из каждой ячейки, но я хочу чтобы быть в состоянии сделать это каждая клетка берет меня на новый контроллер видаTable View Multiple Segues

Вот что я до сих пор, если вы могли бы мне точку в правильном направлении, чтобы, как быть в состоянии сделать это было бы здорово

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

if ([[segue identifier] isEqualToString:@"ShowSimpleDetails"]) { 
    SimpleTutorialsViewController *detailViewController = [segue destinationViewController]; 

    NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow]; 

    int row = [myIndexPath row]; 
    detailViewController.simpleDetailModal = @[_simpleTitle[row], _simpleDescription[row], _simpleImages[row]]; 
    } 
} 

ответ

4

Вы можете сделать это в раскадровке или в коде:

В раскадровке

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

В кодексе

Чтобы сделать это в коде, вы бы сделать переход от контроллера зрения (не мобильный) для каждого пункта назначения и дать каждому непосредственно перейти уникальный идентификатор. Тогда в didSelectRowAtIndexPath, вы бы решить, что цель, которую вы хотите на основе выбранного пути индекса и выполнения SEGUE как

NSString *segueIdentifier = @"someIdentifier";//or whatever logic you need to determined the appropriate identifier 
id sender = self;//or whatever object you want to be the sender 
[self performSegueWithIdentifier:segueIdentifier sender:sender]; 

prepareForSegue

В prepareForSegue, вы бы условный блок для каждого возможного Segue идентификатор:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"oneSegueIdentifier"]) { 
     //preparation 
    } else if ([[segue identifier] isEqualToString:@"anotherSegueIdentifier"]) { 
     //other preparation 
    } 
} 
0

Просто выполните ctrl + перетащите из ячейки прототипа в разные контроллеры представления назначения и назначьте разные идентификаторы.

Скажите, что у вас есть прототип ячейки и четыре разных контроллера режима просмотра. Выполните следующие шаги

  1. Ctrl + перетаскивание от прототипа ячейки до первого контроллера представления назначения и присвоить идентификатор в атрибуты инспектора говорят «cell2view1»
  2. Ctrl + перетаскивание от прототипа ячейки до второго контроллера представления назначения и присвоить идентификатор в атрибуты инспектора говорят «cell2view2»
  3. Ctrl + перетаскивание от прототипа ячейки до третьего контроллера представления назначения и присвоить идентификатор в атрибутах инспекторах говорят «cell2view3»
  4. Ctrl + перетаскивание от прототипа ячейки до четвертого контроллера представления назначения и присвоить идентификатор в атрибутах инспекторах говорят " cell2view4 "

Ваш [segue destinationViewcontroller] будет автоматически установлен в соответствии с вашим раскадровкой.

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

    if ([[segue identifier] isEqualToString:@"cell2view1"]) 
    { 
     //Do things 
    } 
    else if ([[segue identifier] isEqualToString:@"cell2view2"]) 
    { 

    } 
} 
1

вы также должны нажать на TableViewController> TableView> Атрибуты Inspector> Prototype Cells = numberOfSeguqes вы ш муравей сделать.