如何从UIView推送视图控制器

时间:2017-08-29 10:20:29

标签: ios swift uicollectionview

当我点击一个单元格时,我想推动这个视图控制器。

这是我的代码:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let user = filteredUsers[indexPath.item]
    print(user.username)

    let userProfileController = UserProfileController(collectionViewLayout: UICollectionViewFlowLayout())

}

我想推userProfileController

注意:这是UIView而不是视图控制器

3 个答案:

答案 0 :(得分:5)

你不能从UIView推出任何控制器。要做到这一点,你必须使用NavigationController。

我假设你在一些UIViewController中有你的UIView,所以很多选项之一就是创建一个委托,告诉你的视图控制器进行推送。

protocol MyViewDelegate {
    func didTapButton()
}

class MyView: UIView {

    weak var delegate: MyViewDelegate?

    func buttonTapAction() {
        delegate?.didTapButton()
    }
}

class ViewController: UIViewController, MyViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        myView.delegate = self
    }

    func didTapButton() {
        self.navigationController?.pushViewController(someVc, animated: true)
    } 

}

答案 1 :(得分:1)

试试这个

process.env.MOCK_API

答案 2 :(得分:0)

如果导航控制器堆栈和视图控制器中的视图控制器保持视图,则可以按照 阻止机制

func pushViewController(completion: () -> ()) {
}

从VC分配完成块。

self.navigationController?.pushViewController(userProfileController, animated: true)