【发布时间】:2017-09-29 14:16:15
【问题描述】:
已解决:我忘记在 VC1 中声明 tvx.selectionDelegate = self,所以它从未执行过
我搜索了很长时间,并在网上为我的问题提供了两个类似的答案: here
但所有这些都与关闭然后呈现另一个视图一起工作,我想关闭并推送另一个 ViewC。
我有 3 个 ViewController:
VC1 叫它:DownloadsViewController
VC2 让我们称之为:SelectActionController
VC3 让我们称之为:fileInfoView
VC1 以模态方式呈现 VC2,然后 VC2 应关闭,VC1 应立即推送 VC3。
我试过了:
VC2:
self.present(vx, animated: true, completion: nil)
然后将 PUSH 动画置于完成状态 {} 但它会崩溃。
我尝试的下一件事是创建一个委托,如果我按下 VC2 上的一个按钮,它会调用 VC1 来关闭 VC2 并推送 VC3。喜欢这里:
VC2:
protocol PushViewControllerDelegate: class {
func pushViewController(_ controller: UIViewController)
}
class SelectActionController: UIViewController, UITableViewDelegate, UITableViewDataSource {
weak var delegate: PushViewControllerDelegate?
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if self.delegate != nil {
self.delegate?.pushViewController(self)}
VC1:
func pushViewController(_ controller: UIViewController) {
controller.dismiss(animated: true) { () -> Void in
self.performSegue(withIdentifier: self.segue2, sender: nil)
//let vx = self.storyboard?.instantiateViewController(withIdentifier: "FileInfo") as! fileInfoView
//self.navigationController?.pushViewController(vx, animated: false)
}
}
我尝试的 Trird 是创建一个全局变量,如果它关闭,只需将 Bool 变量设置为 true,VC1 中的 func 应该会识别它(我的意图)。唯一的问题是它不会将解雇视为 ViewDidAppear 或类似的东西。
所以这些都不起作用。
有人对此有想法吗?
【问题讨论】:
-
你能贴一些代码吗?
-
将 PUSH 动画置于完成状态 {} 但它崩溃了。 - 错误消息是什么?您是否在主线程的完成块中添加该动画?
-
@EvertonCunha 哪个控制器或代码,如果有帮助,我什至可以分享整个代码?
-
发布你的完成块代码。
-
@PranavKasetti 我做了