Проект
Я работаю над относительно простым проектом iPhone OS, основанным на контроллере навигации, с представлением корневой таблицы и представлением подробных таблиц. Коснитесь элемента в главном списке, чтобы просмотреть его детали в виде таблицы.
Настройка
Я разбил источник данных для обоих представлений на их собственные объекты, чтобы не запутать назначение контроллера представлений. После этого у табличных представлений больше нет источников данных, поскольку эти методы теперь находятся в отдельных файлах, поэтому я создал экземпляр каждого класса источника данных в соответствующих файлах XIB с элементом Object (перетащил его, затем установил его класс). , Затем, чтобы на самом деле соединить представления таблиц с их источниками данных, я установил выход данных dataSource для каждого представления таблицы на желтый объект источника данных в Интерфейсном Разработчике. Делегаты табличного представления все еще установлены на свои контроллеры представления.
Проблема
Представление корневой таблицы работает просто отлично, но когда вы нажимаете строку, чтобы перейти к подробному представлению, объект источника данных создается, как и ожидалось, а затем немедленно освобождается, вызывая сбой (numberOfSectionsInTableView: вызывается для освобожденного объект). Я не могу понять, почему источник данных автоматически освобождается, когда он мне нужен прямо здесь и сейчас для подробного представления, как указано моим созданием объекта источника данных и соединением представления таблицы в Интерфейсном Разработчике. Еще более озадачивает то, что сам подход прекрасно работает для корневого представления таблицы!
Вопрос
Есть ли что-то очевидное, что я пропускаю, что могло бы вызвать это? Или это даже правильный способ создания источника данных для контроллера табличного представления? Похоже, плохое объектно-ориентированное программирование делает это из контроллера view , который должен касаться только вида. Я мог бы втиснуть все в два класса контроллера табличного представления, и это, вероятно, сработало бы, но это было бы не так модульно, как хотелось бы.
Спасибо!