私はエラーメッセージに直面しています:
"UIStoryboardSegue does not have a member named 'identifier'"
エラーの原因となっているコードは次のとおりです
if (segue.identifier == "Load View") {
// pass data to next view
}
Obj-Cでは、次のように使用しても問題ありません。
if ([segue.identifier isEqualToString:@"Load View"]) {
// pass data to next view
}
私は何を間違えていますか?
これは、UITableViewController
サブクラステンプレートの問題によるものと思われます。セグエをアンラップする必要があるprepareForSegue
メソッドのバージョンが付属しています。
現在のprepareForSegue
関数を次のものに置き換えます。
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "Load View") {
// pass data to next view
}
}
このバージョンでは、暗黙的にパラメーターがアンラップされるため、問題はありません。
Swift 4、Swift
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MySegueId" {
if let nextViewController = segue.destination as? NextViewController {
nextViewController.valueOfxyz = "XYZ" //Or pass any values
nextViewController.valueOf123 = 123
}
}
}
問題は、!識別子をバンドル解除する
私は持っています
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
if segue!.identifier == "Details" {
let viewController:ViewController = segue!.destinationViewController as ViewController
let indexPath = self.tableView.indexPathForSelectedRow()
viewController.pinCode = self.exams[indexPath.row]
}
}
私の理解は!真または偽の値を取得するだけです
Swift 1.2
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "ShowDeal") {
if let viewController: DealLandingViewController = segue.destinationViewController as? DealLandingViewController {
viewController.dealEntry = deal
}
}
}
Swift 2.3、Swift3、およびSwift4の場合:
DidSelectRowAtindexPathでパフォーマンスセグエを作成する
例:
self.performSegue(withIdentifier: "uiView", sender: self)
その後、prepareforSegue関数を作成してDestinationセグエをキャッチし、値を渡します。
例:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "uiView"{
let destView = segue.destination as! WebViewController
let indexpath = self.newsTableView.indexPathForSelectedRow
let indexurl = tableDatalist[(indexpath?.row)!].link
destView.UrlRec = indexurl
//let url =
}
}
Destination ViewControllerにUrlRecという名前の変数を作成する必要があります
Swift 4.2およびSwift 5.でセグエの準備をします。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "OrderVC") {
// pass data to next view
let viewController = segue.destination as? MyOrderDetailsVC
viewController!.OrderData = self.MyorderArray[selectedIndex]
}
}
特定のイベント(ボタンのクリックなど)でセグエを呼び出す方法:
performSegue(withIdentifier: "OrderVC", sender: self)
これは、この関数を使用する方法の1つです。別のクラスの変数にアクセスし、その変数に基づいて出力を変更する場合です。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let something = segue.destination as! someViewController
something.aVariable = anotherVariable
}
異なる識別子で同じ宛先View Controllerを使用していない場合、コードは他のソリューションよりも簡潔になる可能性があります(他のいくつかの回答ではas!
を回避します):
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if let myViewController = segue.destinationController as? MyViewController {
// Set up the VC
}
}