базовый подкласс iphone UIViewController не отображает представление в UINavigationController - PullRequest
1 голос
/ 12 июня 2011

У меня была идея создать подкласс UIViewController как базовый класс для моих последующих контроллеров с целью добавления кнопки «выход» к UINavigationController в моем делегате приложения.

//MyAppDelegate.m
@synthesize navigationController; //UINavigationController

//-didFinishLaunchingWithOptions...
[self.window addSubview:navigationController.view];
...

В моем MainWindow.xib у меня есть NavigationController, подключенный к .. navigationController с DashboardViewController в качестве корневого контроллера представления.

//BaseLogoutViewController.m

- (void)loadView {
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc]
                               initWithTitle:NSLocalizedString(@"Logout", @"")
                               style:UIBarButtonItemStyleBordered
                               target:self
                               action:@selector(logoutPressed)];

   self.navigationItem.rightBarButtonItem = addButton;
   [addButton release];
   [super loadView];
}

// -(void)logoutPressed callback implemented
// viewDidLoad, didRecieveMemoryWarning, dealloc implemented

//DashboardViewController.h
@interface DashboardViewController : BaseLogoutViewController { }

DashboardViewController : UIViewController
DashboardViewController: UIViewController

DashboardViewController : BaseLogoutViewController
DashboardViewController: BaseLogoutViewController

Хорошей новостью является то, что она показывает кнопку выхода из системы, но на панели управления не отображается ее собственное представление. BaseLogoutViewController не имеет собственного пера. Мой вопрос: почему, когда я создаю подкласс BaseLogoutViewController, он больше не показывает мой DashboardViewController вид?

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

вещей, которые вы подразумевали, но я хотел бы подтвердить:

  • у вас будет более одного контроллера представления, вставленного / выдвинутого на контроллер навигации?
  • Вы хотите, чтобы кнопка выхода из системы отображалась при каждом нажатии на контроллер навигации?

, который сказал, loadView - это , а не , что вы хотите переопределить, viewDidLoad - это место, куда вы хотите поместить приведенный выше код,

'loadView` отвечает (как ни странно) за загрузку представления, чего он не делает, переопределив его, вы предотвратили его появление, вы хотите расширить представление после его загрузки,

0 голосов
/ 12 июня 2011

Попробуйте вызвать [super loadView] в вашем - (void) метод loadView ... это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...