iPhone UINavigationController внутри UIViewController

Шаги:

  • Пункт списка
  • Создайте проект под названием Nav.
  • Создайте новый UIViewController BaseViewController (с XIB) и FirstViewController (с XIB).
  • В NavAppDelegat.h определите переменную baseController

    @interface NavAppDelegate : NSObject <UIApplicationDelegate> {
    BaseViewController *baseController;
    }
    @property (nonatomic, retain) IBOutlet BaseViewController *baseController; 
    
  • В NavAppDelegat.m добавьте в окно baseController:

    @synthesize baseController;
    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [self.window addSubview:baseController.view];
    [self.window makeKeyAndVisible];
    return YES;
    }
    
  • Откройте файл BaseViewController.xib и добавьте UINavigationController, установите для его класса Root View Controller и XIB значение FirstViewController (в инспекторе).

  • Также свяжите переменную navigationController с UINavigationController.

Я считаю, что это должно показать мне FirstViewController с панелью навигации. Если я сделаю это непосредственно в MainWindow.xib, все будет работать так, как я ожидал, но здесь я не вижу панели навигации. Что мне не хватает? Спасибо!

ОБНОВЛЕНИЕ: проблема только в том, что если я использую UINavigationController внутри некоторого дополнительного контроллера (здесь BaseViewController.xib) вместо MainWindow.xib, я не вижу панель навигации.


person xpepermint    schedule 21.01.2011    source источник


Ответы (1)


Я не могу сказать, пытаетесь ли вы подключить свой навигационный контроллер непосредственно к своему окну, только из второго XIB (который должен работать), или если вы делаете свой навигационный контроллер подвидом другого представления, что не сработает. .

UINavigationController предназначен только для использования в качестве основного подвида UIWindow или подвида UITabController. Apple не хочет, чтобы вы встраивали контроллер навигации в другие контексты.

См. комбинированные интерфейсы контроллера представления в Программе контроллера представления Руководство для более подробной информации.

person Seamus Campbell    schedule 21.01.2011
comment
Привет, Симус, означает ли это в моем DetailViewController моего UISplitViewController, что у меня не может быть UINavigationController с UIViewController, который взаимодействует с UITableView, потому что я не могу подключить подвид navigationController? Я могу показать UINavigationController в моем подробном представлении, но само табличное представление не отображается. - person fes; 12.06.2011
comment
Интерфейсы комбинированного контроллера представления теперь находятся здесь: developer.apple.com/library/ios/#documentation/WindowsViews/ - person cbrauchli; 17.08.2012