这是UIView文件的XIB所有者
import UIKit
class sideBarContent: UIView {
@IBOutlet weak var userName: UILabel!
@IBOutlet var sideBarContentView: UIView!
let mapviewcontroller = MapViewController()
@IBAction func userProfile(_ sender: UIButton) {
mapviewcontroller.performSegueFromView(stringFromView: "userprofile")
}
在我的UIviewcontroller中
class MapViewController: UIViewController
{
func performSegueFromView(stringFromView:String){
performSegue(withIdentifier: "\(stringFromView)", sender: nil)
}
}
它说我的segue标识符不存在,请帮助,我已经迷路了。而且我也无法在UIView中执行segue,我也尝试使用情节提要ID方法,但是目前(vc,动画:true,完成:nil)没有显示。
答案 0 :(得分:0)
首先,我认为您不应该从视图访问视图控制器。最好在视图控制器中而不是在视图控制器中对控制器逻辑建模。
也就是说,您可以使用委托模式来实现您的功能。
import UIKit
class SideBarContent: UIView {
@IBOutlet weak var userName: UILabel!
@IBOutlet var sideBarContentView: UIView!
let delegate: SideBarContentDelegate? = nil
@IBAction func userProfile(_ sender: UIButton) {
self.delegate?.performSegueFromView(withIdentifier: "userprofile")
}
}
protocol SideBarContentDelegate {
func performSegueFromView(withIdentifier identifier: String)
}
class MapViewController: UIViewController, SideBarContentDelegate {
@IBOutlet private weak var sidebarView: SideBarContent!
override func viewDidLoad() {
super.viewDidLoad()
self.sidebarView.delegate = self
}
func performSegueFromView(withIdentifier identifier: String) {
self.performSegue(withIdentifier: identifier, sender: nil)
}
}