2012-05-13 2 views
0

Я смотрел несколько турориалов, и все вызывают новый вид только с одной строкой кода или более, если они передают любую информацию в следующий вид. На данный момент я хочу построить меню с Segue как это:prepareForSegue не инициализирует новый вид

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {   
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    if ([path row]==0) { 
     MainViewController *mtvc = (MainViewController *)[segue destinationViewController]; 
    } else { 
     SettingsViewController *svc = [segue destinationViewController]; 
    }  
} 

Normaly все примеры использования «segue.identifier isEqualToString: @»»». Но я не мог соединить ячейку моего представления таблицы внутри раскадровки с более чем одним другим представлением. Поэтому я использовал выбранную строку для определения того, какой из моих представлений должен произойти.

Я не знаю, если это может больше появляться проблемы, но я инициализирован TableView от моего splashview следующим образом:

-(void)turnNext { 
    UIStoryboard *storyboard = self.storyboard; 
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"]; 
    [self presentViewController: mtvc animated:YES completion:nil]; 
} 
+0

Вы не используете UINavigationController? – Martol1ni

+0

Я выбрал вид таблицы и ввел навигационный контроллер. Есть ли другой способ, когда вы переходите из меню в другие виды? –

+0

Почему вы используете segues, а не pushViewController? Мне просто любопытно :) – Martol1ni

ответ

0
-(void)turnNext { 
    UIStoryboard *storyboard = self.storyboard; 
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"]; 

    [self presentViewController: mtvc animated:YES completion:nil]; 
} 
      ^^^^^^ 

изменения, которые в

[self.navigationController pushViewController:mtvc animated:YES]; 
+0

это изменит мою проблему для шагов после? потому что переход к представлению таблицы просто работает с моим кодом ... Я мог бы автоматически переключать представление всегда, но я всегда читаю, что вы не должны часто использовать этот способ при использовании раскадровки в проекте –

0

Вы должны использовать segues для этой цели.

  • Создайте 2 пользовательских segues на вашем контроллере источника в раскадровке.
  • Установите свой идентификатор, как 'segueToMainViewController' и

Теперь, в Tableview 'segueToSettingsViewController' - '' didselectrowAtIndexPath использования метода ниже.

//use your logic here 

if(indexPath.row == 1) { 
    [self performSegueWithIdentifier:@"segueToMainViewController" sender:nil]; 
} 
else { 
    [self performSegueWithIdentifier:@"segueToSettingsViewController" sender:nil] 
} 

Вы можете передавать данные в качестве отправителя, если вам нужно что-либо передать вашим контроллерам.

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