在Storyboard Scenario中关闭Popover(作为UITableViewController)

时间:2013-06-20 14:43:07

标签: xamarin.ios storyboard uitableview popover

我在IB(Storyboard)中定义了一个popover segue来打开一个嵌入在UINavigationViewController中的UITableViewController。我需要这个在popover中导航。
另外我添加了两个顶部栏按钮(保存,取消)。点击任何一个后,我想解散/关闭弹出窗口。

我尝试了不同的东西,但没有任何作用。

  • 调用 DismissViewController(true,null); 无效果
  • 调用RemoveFromParentViewController会关闭我的应用程序(或者只是崩溃?)

我已经阅读了DismissPopoverController但由于在UINavigationViewController中使用嵌入式UITableViewController来处理原型表,因此在我的场景中不可用。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

经过一番尝试和错误后,我得到了解决方案......我希望其他人能从我的解决方案中获得一些好处;)

在我的基本视图中:

    public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender)
    {
        if (segue.Identifier == "MySegueIdentifier")
        {
            var popoverSegue = segue as UIStoryboardPopoverSegue;
            _myTableViewController = segue.DestinationViewController.ChildViewControllers[0] as MyTableViewController;
            _myTableViewController.PopoverController = popoverSegue.PopoverController;
            _myTableViewController.CloseCallback = AddNewTrAndRefreshCallback;
        }

        base.PrepareForSegue (segue, sender);
    }


    private void AddNewTrAndRefreshCallback()
    {
        if (myTableViewController == null || _myTableViewController.Cancled)
            return;

        var selectedRecord = _myTableViewController.SelectedRecord;
                    // Do whatever you want...
    }

在我的popover(UINavigationViewController中嵌入的UITableViewController)

    partial void buttonCancelClicked (MonoTouch.UIKit.UIBarButtonItem sender)
    {
        Cancled = true;
        CloseCallback();
        PopoverController.Dismiss(true);
    }

    partial void buttonDoneClicked (MonoTouch.UIKit.UIBarButtonItem sender)
    {
        Cancled = false;
        SelectedRecord = _tableViewSource.SelectedRecord;
        CloseCallback();
        PopoverController.Dismiss(true);
    }

不要犹豫,询问是否有任何不确定因素。