Программно добавить UINavigationController в UIViewController - PullRequest
6 голосов
/ 09 декабря 2010

В настоящее время у меня есть представление, настроенное следующим образом:

@interface BlogViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    UITableView *mainTableView;
}

@property (nonatomic, retain) UITableView *mainTableView;

Как вы можете видеть, внутри него есть UITableView, в который я загружаю все свои данные.Однако, когда я вызываю следующую функцию:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    SingleBlogViewController *viewController = [[SingleBlogViewController alloc] init];
    [self.navigationController pushViewController:viewController animated:YES];
    //[self presentModalViewController:viewController animated:YES];
    [viewController release];
}

ничего не происходит.По какой-то причине мои UITableView внутри моих UIViewController не выдвигают вид.Это потому что это не UITableViewController?Я попытался изменить это на это, и это все еще не работало.

Я что-то здесь упускаю?

Ответы [ 2 ]

26 голосов
/ 20 января 2011

Я нашел первые части этого сообщения в блоге полезными для демонстрации того, как программно создавать и использовать UINavigationController без Interface Builder.

Некоторые вещи, которые я хотел бы, чтобы документы и учебники подчеркнули бы меня:

  • При создании UINavigationController вы получаете UIView и UINavigationBar бесплатно (т.е. вам не нужно отдельно добавлять их и выяснять, как их соединить).

  • Вы добавляете свойство myUINavigationController.view в качестве «основного» представления, а затем нажимаете / pop UIViewController s на UINavigationController, и они автоматически отображаются как видимые в myUINavigationController.view UIView.

  • Когда вы нажимаете UIViewController на UINavigationController, заполняется UIViewController.navigationController. Если вы не выдвинули представление на контроллер навигации, я предполагаю, что свойство пусто.

  • Время / место для программного добавления кнопок в UINavigationBar определяется не когда и где вы создаете UINavigationController, а скорее отдельными UIViewController с, когда они загружаются при нажатии на UINavigationController.

  • Мне нужно было только добавить кнопку «Готово» к UINavigationController UINavigationBar в методе viewDidLoad первого UIViewController, выдвинутого на UINavigationController. Любой UIViewController, который я нажал на top этого первого вида, автоматически имел кнопку «назад» для перехода к скрытому UIViewController.

  • Если вы установите свойство title вашего UIViewController перед тем, как поместить его в стек UINavigationController. Заголовок UINavigationBar будет заголовком вашего представления. Кроме того, любые кнопки «назад» будут автоматически называть вид, к которому вы возвращаетесь, вместо того, чтобы произносить слово «назад».

0 голосов
/ 06 декабря 2011

Пожалуйста, посетите " Как программно добавить UINavigationController "

Пожалуйста, перейдите по ссылке выше и получите всю информацию о UINavigationController.

UINavigationController является подклассом UIViewController, но в отличиеUIViewController это обычно не для вас, чтобы подкласс.Это связано с тем, что сам навигационный контроллер редко настраивается за пределы визуальных элементов навигационной панели.Экземпляр UINavigationController может быть сравнительно легко создан либо в коде, либо в файле XIB.

...