2013-06-20 2 views
1

Я определил popover segue в IB (Storyboard), чтобы открыть UITableViewController, встроенный в UINavigationViewController. Мне нужно это для навигации в popover.
Кроме того, я добавил две кнопки верхнего бара (сохранить, отменить). После того, как либо щелкнули, я хочу рассеять/закрыть popover.Закрыть Popover (как UITableViewController) в сценарии раскадровки

Я пробовал разные вещи, но ничего не работает.

  • Вызов DismissViewController (true, null); не имеет никаких эффектов
  • Вызывать RemoveFromParentViewController закрывает мое приложение (или просто разбился?)

Я читал о DismissPopoverController, но это не доступно в моем сценарии из-за использования встроенного UITableViewController в UINavigationViewController работать с прототипом столы.

Любые предложения?

ответ

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 (UITableViewController, встроенном в UINavigationViewController)

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); 
    } 

Не стесняйтесь спрашивать, что-то неясно.