【发布时间】:2018-09-21 21:53:27
【问题描述】:
我有一个附有 2 个视图的标签栏控制器,每个视图都嵌入在导航控制器中。我已经从标签栏控制器到另一个具有标识符“toNew”的视图控制器进行了segue类型的显示。在其中一个标签栏视图中,我有一个按钮,它应该使用标识符“toNew”触发这个 segue。 我试过 DataDelegate 但在这里不起作用。
这是附加在标签栏中的视图控制器的视图控制器文件
import UIKit
protocol DataDelegate {
func sendData(data : String)
}
class NavContToNew: UIViewController , UITabBarDelegate {
var delegate : DataDelegate?
var data : String = "ToNew"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func dismiss(_ sender: Any) {
//self.dismiss(animated: true, completion: nil)
self.delegate?.sendData(data:self.data)
print("Perform segue delegate")
}
}
这是标签栏 controller.swift 文件
import UIKit
class TabBarCont: UITabBarController , DataDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func sendData(data: String) {
if data == "ToNew" {
print("Segue perform")
self.performSegue(withIdentifier: "toNew", sender: self)
}
}
}
【问题讨论】:
-
按钮在紫色视图控制器中吗?如果是这样,请将您的 segue 连接到该 VC 而不是标签栏控制器。您也可以连接按钮直接将 segue 连接到情节提要中的下一个 VC,而无需任何代码。
-
感谢您的回答。我试过了,但我想退出导航控制器(没有导航栏)并以推送模式呈现视图控制器。
标签: ios swift xcode tabbarcontroller