Использование Split Views на iPad

navigation controller специфичен для iPhone, а split view controller для iPad.

universal app запущенное на iPad simulator:


Одно из преимуществ universal app в том что используется одно и тоже хранилище данных для обоих семейств устройств.

Поворачивая симулятор можно наблюдать за поведением split view.


Для обоих устройств master view controller различный.

DetailViewController_iPhone.xib
DetailViewController_iPad.xib

Откройте DetailViewController.h как показано на рисунке:


Вы увидите свойства customer и address. Если нажать на серый кружок слева от них то можно увидеть связанные со свойством элементы интерфейса. При клике будет совершен переход к элементу интерфейса:


В DetailViewController_iPad.xib удалите label и добавьте text field:


Соедините свойство name из File’s Owner с текстовым полем:


Убедитесь в том что свойство установлено:


В случае с split view controller не получится использовать viewWillAppear и viewWillDisappear для перемещения данных между managed object и  interface objects. Нужно использовать configureView:
- (void)configureView
{
// Update the user interface for the detail item.
self.name.text = [self.detailItem valueForKey:@”name”];
}

Выделим код из viewWillDisappear, в отдельный метод:
#pragma mark - Object lifecycle
- (void) saveNameData {
[self.detailItem setValue: self.name.text forKey:@”name”];
NSError *error;
if (![self.detailItem.managedObjectContext save:&error]) {
// Update to handle the error appropriately.
NSLog(@”Unresolved error %@, %@”, error, [error userInfo]);
exit(-1); // Fail
}
}

Также добавим декларацию в .h файл:
- (void) saveNameData;

В navigation-based приложениях (таких как на iPhone) вьюхи задвигаются и выдвигаются, поэтому можно использовать метод viewWillAppear. А на iPad совершенно другая концепция - данные должны быть как бы "разглажены" (flattened) по поверхности планшета. Поэтому на iPad вьюхи никуда не двигаются, а все время остаются на своем месте.