navigation controller специфичен для iPhone, а split view controller для iPad.
universal app запущенное на iPad simulator:
Поворачивая симулятор можно наблюдать за поведением 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 вьюхи никуда не двигаются, а все время остаются на своем месте.