0

我在导航栏中有一个带有 UISegmentedControl 的 UINavigationViewController。当用户推送分段控件时,我想实现对不同 ViewController 的简单切换。

我已经尝试了很多,但没有任何效果......考虑的来源:

整个项目是基于故事板的!任何针对 NIB 的解决方案都没有用。

将 ContainerControl 添加到我的 UINavigationViewController。但在这种情况下,我只能嵌入一个控制器。无法以编程方式创建 Embedded-Segue。在 IB 中设计的代码中更多地实例化 UITableViewController 会导致空视图。因为我必须将 c'tor 从 MyTableViewController(IntPtr handle) : base(handle) 更改为空构造函数。

有人可以发布一个工作示例如何使用 UISegmentedControl 在不同的 ViewController 之间切换吗?我非常感谢你的帮助。

4

1 回答 1

2

工作解决方案:

    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);
    }
于 2013-06-21T14:20:49.253 回答