2016-04-02 6 views
0

Я пытаюсь сделать вид программным путем, но у меня проблемы.pop view off программно

import UIKit 

class CreatePostViewController: UIViewController { 

    var isAnimating: Bool = false 
    var dropDownViewIsDisplayed: Bool = false 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     createDescriptionField() 
     createLabels() 
     createInputFields() 
     createBackButton() 

    } 
    //More code omitted 

    func createBackButton(){ 
     let button = UIButton() 
     button.setTitle("back", forState: .Normal) 
     button.setTitleColor(UIColor.blueColor(), forState: .Normal) 
     button.frame = CGRectMake(200,200,100,50) 
     button.backgroundColor = UIColor.redColor() 
     button.addTarget(self, action: "goBack:", forControlEvents: .TouchUpInside) 
     self.view.addSubview(button) 

    } 

    func goBack(sender: UIButton){ 
     navigationController?.popToRootViewControllerAnimated(true) 

    } 

} 

добавить этот класс от А другого класса, как это:

import UIKit 

class HomeViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     needCashButton() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func needCashButton(){ 

     let image = UIImage(named: "GlossyRoundedButton.png") as UIImage? 
     let button = UIButton() 
     button.setTitle("Do Job", forState: .Normal) 
     button.setTitleColor(UIColor.blueColor(), forState: .Normal) 
     button.setBackgroundImage(image, forState: .Normal) 
     button.frame = CGRectMake(225,200,100,50) 

     button.addTarget(self, action: "cashButtonPressed:", forControlEvents: .TouchUpInside) 
     self.view.addSubview(button) 

    } 


    func cashButtonPressed(sender: UIButton){ 
     let findJob = CreatePostViewController() 
     self.presentViewController(findJob, animated: false, completion: nil) 
    } 

} 

Я прочитал множество других постов, предложенных я просто вытолкнуть CreatePostViewController с линией: navigationController?.popToRootViewControllerAnimated(true) но это ничего не делать когда Я нажимаю кнопку. Что-то я здесь не замечаю?

ответ

1

Если UIViewController является НЕ в UINavigationViewController (или это было представлено модально), использовать это, чтобы отклонить его:

self.dismissViewControllerAnimated(true, completion: nil) 

Если у вас есть его внутри UINavigationViewController, отклоните его, используя это:

self.navigationController.popViewControllerAnimated(true) 
+0

Спасибо. – Anderology

0

navigationController работает, только если вы используете навигационный контроллер :). Поэтому я хотел бы предложить, чтобы использовать что-то вроде этого

let vc = UINavigationController(rootViewController: CreatePostViewController()) 
self.presentViewController(vc, animated: false, completion: nil) 
Смежные вопросы