2015-07-27 4 views
2

Я хотел бы создать UITableViewController в качестве выпадающего списка при нажатии на UIButton.UITableViewController как выпадающее меню?

Я создал один, используя addChildViewController, но я не могу удалить его, нажав кнопку во второй раз.

Код я использовал:

var flag = 0 
func filter(sender: UIButton){ 
let _viewController = storyboard!.instantiateViewControllerWithIdentifier("UserViewController") as! UserViewController 
if(flag == 1){ 
      _viewController.willMoveToParentViewController(nil) 
      _viewController.removeFromParentViewController() 

     flag = 0 
     return 
    } 

    addChildViewController(_viewController) 
    _viewController.view.frame.origin.y = filterButton.frame.maxY 
    _viewController.view.frame.origin.x = self.view.frame.size.width-250 
    _viewController.view.frame.size.width = 250 
    _viewController.view.frame.size.height = 500 
    self.view.addSubview(_viewController.view) 
    flag = 1 
} 

ответ

1

Ваше дело просто потому, что вы инстанцирования вид контроллера каждый раз при нажатии кнопки. Вы должны создать экземпляр _viewController в viewDidLoad. Также вы должны удалить представление из супервизора при удалении и сделать сам себя как родителя при добавлении.

Подробнее см. Ссылку How is a parent view controller notified that is's child view controller has removed itself?. Ваш код должен выглядеть следующим образом,

var _viewController:UITableViewController! 
var flag = 0 
func filter(sender: UIButton){ 

    if(flag == 1){ 
     _viewController.willMoveToParentViewController(nil) 
     _viewController.view.removeFromSuperview() 
     _viewController.removeFromParentViewController() 
     flag = 0 
     return 
    } 

    addChildViewController(_viewController) 
    _viewController.view.frame.origin.y = filterButton.frame.maxY 
    _viewController.view.frame.origin.x = self.view.frame.size.width-250 
    _viewController.view.frame.size.width = 250 
    _viewController.view.frame.size.height = 500 
    self.view.addSubview(_viewController.view) 
    _viewController.didMoveToParentViewController(self) 
    flag = 1 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    _viewController = storyboard!.instantiateViewControllerWithIdentifier("UserViewController") as! UserViewController 

} 
+0

Спасибо за быстрый ответ. Я попробую это. – codedreamer

+0

эй! Большое спасибо. Я сделаю все остальное. – codedreamer

+0

Рад, что это помогает ..! – Boopathy

0

Не используйте падение падения. Это не то, что принадлежит iOS.

http://www.lukew.com/ff/entry.asp?1950

+0

Спасибо за ваше предложение. Я посмотрю на это. Прямо сейчас, как новичок, я получил свой ответ и узнал новое. – codedreamer

Смежные вопросы