Переключение на разные UITableViewControllers с помощью UISementedControl

У меня есть UINavigationViewController с UISegmentedControl на панели навигации. Я хочу добиться простого переключения на разные ViewControllers, когда пользователи нажимают на сегментированный элемент управления.

Я много пробовал, и ничего не работает... Рассматриваемые источники:

Весь проект основан на раскадровке! Любые решения, нацеленные на NIB, бесполезны.

Добавление ContainerControl в мой UINavigationViewController. Но в этом случае я могу встроить только один контроллер. Создание Embedded-Segue программно было невозможно. Более того, создание экземпляра UITableViewController в коде, разработанном в IB, приводит к пустому представлению. Потому что я должен изменить c'tor с MyTableViewController (дескриптор IntPtr): base (дескриптор) на пустой конструктор.

Может ли кто-нибудь опубликовать рабочий пример использования UISegmentedControl для переключения между разными ViewController'ами? Я очень ценю вашу помощь.


person dannyyy    schedule 21.06.2013    source источник


Ответы (1)


Рабочее решение:

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();

        CreateAndEmbed (TrDetailNavType.Info);
    }

    partial void segmentNavigationValueChanged (MonoTouch.UIKit.UISegmentedControl sender, MonoTouch.UIKit.UIEvent e)
    {
        CreateAndEmbed((TrDetailNavType)sender.SelectedSegment);
    }

    private void CreateAndEmbed(TrDetailNavType tab)
    {
        if (_currentViewController != null) 
        {
            _currentViewController.View.RemoveFromSuperview ();
            _currentViewController.RemoveFromParentViewController();
        }

        string id;
        switch (tab)
        {
        case TrDetailNavType.Info:
            id = "TagesRapportDetailInfoTableViewController";
            break;
        case TrDetailNavType.Lohn:
        case TrDetailNavType.Material:
        case TrDetailNavType.Inventar:
        case TrDetailNavType.Fremdleistung:
        case TrDetailNavType.Regie:
            id = "TagesRapportDetailDummyViewController";
            break;
        }

        _currentViewController = (UIViewController)Storyboard.InstantiateViewController (id);
        _currentViewController.View.Frame = containerDetail.Bounds;
        AddChildViewController (_currentViewController);
        _currentViewController.DidMoveToParentViewController (this);
        containerDetail.AddSubview (_currentViewController.View);
    }
person dannyyy    schedule 21.06.2013