Я замечаю, что у Apple есть то, что кажется дублирующими именами: 2 свойства и два ivars. Почему Apple делает это?Почему Apple использует как частные вары, так и свойства с тем же именем в примере кода рецептов?
//.h file
@interface TypeSelectionViewController : UITableViewController {
@private
Recipe *recipe;
NSArray *recipeTypes;
}
@property (nonatomic, retain) Recipe *recipe;
@property (nonatomic, retain, readonly) NSArray *recipeTypes;
Затем они обновляют экземпляр рецепта ниже. Почему есть две переменные с тем же именем? Будет ли влиять на переменную рецептуры parentViewController
, так как эта переменная рецепта была задана при представлении этого контроллера вида, код которого находился от parentViewController
?
//.m file
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// If there was a previous selection, unset the accessory view for its cell.
NSManagedObject *currentType = recipe.type;
if (currentType != nil) {
NSInteger index = [recipeTypes indexOfObject:currentType];
NSIndexPath *selectionIndexPath = [NSIndexPath indexPathForRow:index inSection:0];
UITableViewCell *checkedCell = [tableView cellForRowAtIndexPath:selectionIndexPath];
checkedCell.accessoryType = UITableViewCellAccessoryNone;
}
// Set the checkmark accessory for the selected row.
[[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];
// Update the type of the recipe instance
recipe.type = [recipeTypes objectAtIndex:indexPath.row];
// Deselect the row.
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
UPDATE 1
Этот код из iPhoneCoreDataRecipes ядра, например данных от Apple:
Сначала посмотрим на метод делегата RecipeViewController's
didSelect, который представит TypeSelectionViewController
(ребенка) контроллер представления , Затем рассмотрите способ делегата viewcontroller didSelect
, где вы найдете реализацию кода.
Причина, по которой я начал смотреть на это, потому что мне было интересно, как ячейка tableView родителя обновилась в соответствии с выбором в ChildViewController
в режиме редактирования.
Чтобы увидеть это для себя, сделайте следующее:
- Запустите приложение
- Выберите вкладку
Recipes
- Нажмите на рецепт - Шоколадный торт.
- Нажмите кнопку «Изменить» в правом верхнем углу
- Обратите внимание на текущую категорию - должно быть в пустыне - затем нажмите на нее.
- Затем вас отвезут в контроллер детского зрения
- Нажмите на другую категорию, затем нажмите назад, и вы заметите, что кнопка категории для этого рецепта волшебным образом обновлена. И я не знаю, как это происходит.
Связано ли это с частными иварами и свойствами? который влияет на ячейку parentViewController
?
Мой вопрос i Угадайте, как выбор типа категории в таблице контроллера детского просмотра влияет на cell.text в таблице контроллера родительского контроля? Я не вижу, где управляемый объектбезопасность сохраняется в контроллере дочернего представления, чтобы он автоматически обновлял текст ячейки родительского элемента View.
Где находится этот образец кода? Могу ли я увидеть полную реализацию? – nhgrif
Да, пожалуйста, проверьте обновленное сообщение, где я разместил ссылку – Pavan
. В верхней части .m должна быть строка, которая говорит '@synthesize recipe = recipe; @syntehsize recipeTypes = recipeTypes; 'Это только более старый код, прежде чем он изменил его, чтобы сделать большую часть этой работы для вас в фоновом режиме. – Putz1103