【问题标题】:pop view off programmatically以编程方式弹出视图
【发布时间】:2016-07-22 15:26:14
【问题描述】:

我正在尝试以编程方式弹出视图,但遇到了问题。

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),但是当我单击按钮时,这并没有做任何事情。这里有什么我忽略的吗?

【问题讨论】:

    标签: ios swift uiviewcontroller uibutton


    【解决方案1】:

    navigationController 仅在您实际使用导航控制器时才有效:)。所以我建议使用这样的东西

    let vc = UINavigationController(rootViewController: CreatePostViewController())
    self.presentViewController(vc, animated: false, completion: nil)
    

    【讨论】:

      【解决方案2】:

      如果您的 UIViewController 在 UINavigationViewController 中是 NOT(或者它以模态方式呈现),请使用它来关闭它:

      self.dismissViewControllerAnimated(true, completion: nil)
      

      如果你在 UINavigationViewController 中有它,请使用以下命令将其关闭:

      self.navigationController.popViewControllerAnimated(true)
      

      【讨论】:

        猜你喜欢
        • 2019-10-24
        • 2015-08-02
        • 1970-01-01
        • 2018-06-25
        • 1970-01-01
        • 2013-11-26
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多