コードを使用してViewControllerから別のViewControllerにジャンプしたいだけです
btn_routh.addTarget(self, action: #selector(self.goToPoiDetail), for: .touchUpInside)
@objc open func goToPoiDetail() {
self.present(PoiDetailViewController(), animated: true, completion: nil)
}
しかし、btn_routhボタンをクリックすると、エラーが表示されました
*** Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[<OMOT.PoiDetailViewController 0x7fb269f1e010>
setValue:forUndefinedKey:]: this class is not key value coding-compliant
for the key addressLabel.'
しかし、私が書くとき
print("print")
goToPoiDetail 関数では、うまく出力されるので、ジャンプ文に問題があると思います
他の場所で
btn_cate.addTarget(self, action: #selector(self.showSubMenu), for: .touchUpInside)
btn_cate ボタンをクリックするとうまくいきます。
現在の ViewController と他の ViewController との大きな違いは、ViewController にはカスタム ビューがあり、カスタム ビューは xib を使用してビューのインターフェイスを構築することです。ただし、ジャンプ アクションがなければ、カスタム ビューは適切に表示されます。
以下は、エラー警告に表示されるフィールド「addressLabel」があるカスタムビューのコードです
import UIKit
class PoiDetailView: UIView {
@IBOutlet weak var categoryLabel: UILabel!
@IBOutlet weak var introLabel: UILabel!
@IBOutlet weak var addressLabel: UILabel!
@IBOutlet weak var distanceLabel: UILabel!
@IBOutlet weak var closeButton: UIButton!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet var containView: UIView!
var action:(()->Void)?
var category:String = ""{
didSet{
categoryLabel.text = category
}
}
var intro:String = ""{
didSet{
introLabel.text = intro
}
}
var address:String = ""{
didSet{
addressLabel.text = address
}
}
var distance:String = ""{
didSet{
distanceLabel.text = distance
}
}
var imageUrl:String = ""{
didSet{
ImageLoader.sharedLoader.imageForUrl(urlString: imageUrl){
image,url in
print("load image")
self.imageView.image = image
}
}
}
var imageAsset:String = ""{
didSet{
imageView = UIImageView(image: UIImage(named: imageAsset))
}
}
func setImage(data:Data){
print("\(#function)")
imageView.image = UIImage(data: data)
}
override init(frame: CGRect) {
super.init(frame: frame)
setupXib()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupXib()
}
func setupXib(){
let view = Bundle.main.loadNibNamed("PoiDetailView", owner: self, options: nil)?.first as! UIView
view.autoresizingMask = [.flexibleHeight,.flexibleWidth]
addSubview(view)
}
@IBAction func closeDetail(_ sender: UIButton) {
isHidden = true
}
}
問題はどこだ?Xib からビューを所有していたこの ViewController からジャンプするにはどうすればよいですか。