MonoTouch: UITableViewController, NavigationController равен нулю после NavigationController.PushViewController - PullRequest
1 голос
/ 02 мая 2011

Я создаю приложение MonoTouch на основе окон (все программные интерфейсы без IB), используя следующую стратегию:

Псевдокод:

 Note: I'm not calling base.ViewDidLoad on any of the ViewDidLoad calls, 
 nor calling any base constructors of any ViewController 
 subclass I've implemented. 

 AppDelegate : UIApplicationDelegate
      FinishedLaunching() 
             window.AddSubView(tabbarController.View)

 TabbarController : UITabbarController
       ViewDidLoad() 
              ViewControllers[0] = myNavigationController

 MyNavigationController : UINavigationController
       ViewDidLoad()
             PushViewController(myTableViewController,false)

 MyTableViewController : UITableViewController
        ViewDidLoad() 
             //Property NavigationController is NULL.

По словам разработчика.apple.com, нужно создать NavigationControllers, используя метод init ObjC с именем initWithRootController, но я не смог найти никакого MonoTouch, эквивалентного этому.

Ref http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/TableView_iPhone/TableViewAndDataModel/TableViewAndDataModel.html

Не должен MyNavigationControllersМетод PushViewController автоматически назначает свойство NavigationController экземпляра MyTableViewController?Могу ли я что-то упустить, чтобы запустить эту автоматическую разводку?

Все остальное работает как положено.Очень благодарен команде МТ!:)

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2011

Когда вы создаете экземпляр myNavigationController, как вы это делаете?Я полагаю, что эквивалент C # для initWithRootController равен:

UINavigationController navController = new UINavigationController(rootViewController);

Чтобы реализовать это в своем пользовательском UINavigationController, вам нужно создать новый конструктор в соответствии с:

MyNavigationController(UIViewController rootViewController)
{
    ViewControllers = new UIViewController[1] { rootViewController };
}

Это установит rootViewController для вас.Вам необходимо удалить PushViewController из метода ViewDidLoad.Для всех последующих ViewControllers, отправленных через PushViewController, это свойство NavigationController будет автоматически установлено для вас.

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