2013-10-08 6 views
1

Я не могу понять раскадровки в xcode 5. Я ищу ответы, выполняя учебные пособия, но ничего не работает, даже простые сцены с раскадрой. Почти все руководства находятся на xcode 4.x, но я работаю в пятом. Насколько я понимаю, существуют некоторые различия между реализацией сцен в xcode 4 и 5. Я вообще не понимаю принцип раскадровки и поэтому не понимаю, почему ничего не работает. Пожалуйста, помогите мне понять разницу между xib и раскадрой. Что лучше для работы и при каких условиях? Все книги, которые у меня есть, касаются IOS 6, и все они с примерами xib, которые я даже не могу запустить в пятом кодексе. Невозможно найти адекватную документацию на developer.apple.com, все запутано. Насколько я понимаю, книги о xcode 5 + IOS 7 будут выпущены через несколько месяцев. Пожалуйста, помогите мне сделать эту схему, ячейки в табличных представлениях статичны.Ссылка на схему https://www.dropbox.com/s/mwwfqgsj2d98exe/Scheme.jpgНе могу понять раскадровки в xcode 5

+0

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

ответ

2

Вот объяснение раскадровки в Xcode 5 и особенности о том, как сделать связи между различными сценами, как указано в вашей схеме, изложенной в изображении ниже:

Начиная с большой картинкой: не

  1. чтобы перетекает между одной сценой или другим, вы Ctrl-перетащить из одного контроллера вида к целевым контроллеру представления (вам больше не нужно чтрла-кли ск от контроля на другую точку зрения)
  2. В исходной сцены (документ контурный вид) щелкните SEGUE созданный
  3. В инспекторе идентичности создать уникальное имя для идентификатора SEGUE
  4. Любой элемент управления теперь может вызвать следующий вид метод контроллера выполнить SEGUE - (пустоты) performSegueWithIdentifier: (NSString *) отправителя идентификатора: (ID) отправитель
  5. можно передавать данные между контроллерами зрения путем реализацией следующего метода на контроллере представления источника: - (void) prepareForSegue: (UIStoryboardSegue *) segue отправитель: (id) отправитель

Так специфичные для вашей схеме:

В раскадровке: Внутри структуры документа (Редактор> Show Document Outline):

Развернуть две сцены

  1. Ctrl- перетащите между ViewController1 в ViewController2
  2. В исходной сцене нажмите созданный segue и установите идентификатор в идентичности инспектора
  3. В контроллере представления источника, создайте prepareForSegue описано выше, чтобы получить доступ и передавать любые объектов данных между контроллерами зрения (убедитесь, что у вас есть свойство на целевом контроллере представления, можно использовать segueIdentifier для контролируйте, какие данные следует отправлять)
  4. В методе действий для двух кнопок вызывается соответствующий сеанс с использованием другого идентификатора для View2 и View5 [self performSegueWithIdentifier: @ "MYSEGUE_ID" отправитель: btnObjectNilEtAl];
  5. Чтобы отобразить сегменты других контроллеров, просто повторите процесс ctrl-drag между контроллером источника и целевого представления (View2 to View4/View5).
  6. Для того, чтобы segues взаимодействовать с ячейкой таблицы, просто добавьте [self performSegueWithIdentifier: @ "MYSEGUE_ID" отправитель: btnObjectNilEtAl]; кода в метод didSelectRowAtIndexPath.

Вот некоторые примеры кода, чтобы вы начали:

// In a story board-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    if ([[segue identifier] isEqualToString:@"showDealDetail"]) 
    { 
     // Get reference to the destination view controller 
     DealDetailViewController *dvc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     [dvc setDetailObject:(NSManagedObject*)sender]; 
    } else if ([[segue identifier] isEqualToString:@"showActivityDetail"]) 
    { 
     ActivityDetailViewController * advc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     [advc setDetailObject:(NSManagedObject*)sender]; 
    } else if ([[segue identifier] isEqualToString:@"showMatchDetail"]) 
    { 
     MatchDetailViewController * mdvc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     [mdvc setDetailObject:(NSManagedObject*)sender]; 
    } 
} 

От ViewController1 в течение двух методов кнопки действий по телефону:

//execute manual segue 
     [self performSegueWithIdentifier:@"showAlternate" sender: self]; 

Scheme

+0

Извините, не совсем понимаю. Я решил упростить свою схему https://www.dropbox.com/s/o82fxpte0hmyxcq/Scheme_Simple.jpg, но это не сработает. Насколько я понимаю, я должен был настроить контроллер навигации и ячейки табличного представления из View2. –

+0

'Завершение приложения из-за неперехваченного исключения 'NSGenericException', причина: 'Не удалось найти контроллер навигации для segue' buttonOneSegue '. Push segues может использоваться только тогда, когда управляющий источник управляется экземпляром UINavigationController. ' –

+0

И это мой код https://www.dropbox.com/s/ep10zzj1buhlo12/Screen%20Shot%202013-10-10%20at % 2011.52.17% 20 PM.png –

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