Как вы уже обнаружили, вам определенно не следует заходить в представление контроллера навигации.
Вы хотите, чтобы SecondViewController
был UIViewController
, который реализует UITableViewDelegate и UITableViewDataSource и чье представлениеизлагает UITableView и UIView, которые вы хотите использовать для своего стационарного «нижнего колонтитула» в своем собственном главном UIView.
Помогает помнить, что UITableViewController в конечном итоге является просто удобством для создания контроллера представления, представление которогополностью состоит из UITableView.
Во всяком случае, вместо попытки вставить кучу этого кода в этот ответ, вы можете просмотреть его (или svn co
) из этого репозитория svn только для чтения .
РЕДАКТИРОВАНИЕ (теперь, когда уже не полночь, ввод кода / объяснения непосредственно в ответ):
Для контроллера, который нужно поместить в стек навигации, которыйнужен нижний колонтитул для создания нового класса на основе UIViewController (НЕ устанавливайте флажок «UITableViewController subclass» во временнойпоздний диалог выбора).
Добавьте переменные экземпляра для UITableView
и UIView
, которые должны быть дополнительным видом снизу.
@interface SecondViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
UITableView* tableView;
UIView* customFooterView;
}
@property (nonatomic,retain) IBOutlet UITableView* tableView;
@property (nonatomic,retain) IBOutlet UIView* customFooterView;
@end
В IB добавьте UITableView и UIView длясуществующее корневое представление для контроллера и раскладывайте их по желанию (вероятно, стоит также изменить параметры авторазмера, если ваше приложение можно использовать как в альбомной, так и в портретной ориентации).Подключите два представления к выходам, определенным для них в «Владельце файла», а также убедитесь, что вы подключили свойства UITableView's
делегата и dataSource к «Владельцу файла».
Затем просто реализуйтеПротоколы UITableViewDelegate и UITableViewDataSource, соответствующие вашему приложению.
Если вы хотите выложить весь вид «нижнего колонтитула» в IB, то продолжайте.В противном случае вы можете легко добавить элементы программным способом в viewDidLoad (и не забудьте разорвать его в viewDidUnload).