Проблема с UITableViewDelegate - PullRequest
0 голосов
/ 28 февраля 2010

У меня есть следующий tableviewdelegate:

private class TableViewDelegate : UITableViewDelegate
    {
        private DaysViewController _dvc;
        private List<DateTime> ConferenceDates;
        public TableViewDelegate (DaysViewController controller, List<DateTime> dates)
        {
            _dvc = controller;
            ConferenceDates = dates;
        }



        /// <summary>
        /// If there are subsections in the hierarchy, navigate to those
        /// ASSUMES there are _never_ Categories hanging off the root in the hierarchy
        /// </summary>
        public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
        {
            string date = ConferenceDates[indexPath.Row].ToShortDateString ();
            Console.WriteLine ("DaysViewController:TableViewDelegate.RowSelected: Label=" + date);

                            /*SessionsViewController sessionsView = new SessionsViewController(date);
            sessionsView.Title = date;
            _dvc.NavigationController.PushViewController(sessionsView,true);*/



            EventsViewController eventsView = new EventsViewController (date);

            eventsView.Title = date;
            try {

                _dvc.NavigationController.PushViewController
                (eventsView, true);

            } catch (Exception ex) {
                Log.Error(ex);
            }
        }
    }

, который добавляется так:

tableView = new UITableView { 
            Delegate = new TableViewDelegate (this, ConferenceDates), 
            DataSource = new TableViewDataSource (this, ConferenceDates), 
            AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth, 
            BackgroundColor = UIColor.Clear, 
            TableHeaderView = navBar, 
            Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height) 
        };

Все это хорошо работает для UITableView - данные загружаются и т. Д., Но всякий раз, когда я щелкаю ячейку для загрузки дочерних данных - _dvc.NavigationController имеет значение null

кто-нибудь знает, где это устанавливается? или, может быть, если это установлено фреймворком - как оно может быть обнулено?

ура - дайте мне знать, если мне нужно опубликовать больше кода.

ш: //

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

Если вы собираетесь использовать контроллер навигации в представлении, вы можете сделать это, создав экземпляр UINavigationController и добавив ваше представление в этот контроллер. Тогда ваше представление становится вложенным представлением UINavigationController, и теперь NavigationController вашего представления должен быть доступен из вашего TableViewDelegate. Представьте навигационный контроллер, который вы хотите. В приведенном ниже примере в качестве контроллера модального вида.

tableView = new UITableView { 
            Delegate = new TableViewDelegate (this, ConferenceDates), 
            DataSource = new TableViewDataSource (this, ConferenceDates), 
            AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth, 
            BackgroundColor = UIColor.Clear, 
            TableHeaderView = navBar, 
            Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height) 
        };

UINavigationController navController = new UINavigationController(tableView);
navController.ModalTransitionStyle = UIModalTransitionStyle.FlipHorizontal;

this.PresentModalViewController(navController, true);
1 голос
/ 28 февраля 2010

странная вещь - если я делаю это в конструкторе:

public DVCTableViewDelegate (DaysViewController controller, List<DateTime> dates)
{
    this._dvc = controller;
    this.ConferenceDates = dates;
    this.navController = controller.NavigationController;
}

navController является UINavigationController, но dvc.NavigationController является нулевым в выбранном способе строки!

странность.

...