1

初めての iOS アプリを作成しようとしています

デリゲート ビュー コントローラーから変数にアクセスしようとすると、「オプション値のラップ解除中に予期せず nil が見つかりました」というエラーが発生しました

押されたセルの値をターゲット コントローラーのラベル テキストとして設定しようとしています。

初めてのコントローラーです

class SearchStationViewController: UITableViewController, writeValueBackDelegate {
    var selectedStation: String!
    var fromStationValue: String! = "None"

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        selectedStation = stations[indexPath.row].StationName
        fromStationValue = selectedStation

        let vc = SelectedStationViewController()
        vc.fromStationValue = self.fromStationValue
        vc.delegate = self

        self.dismissViewControllerAnimated(true, completion: nil)
    }
}

そして、label.textを変更したいターゲットコントローラ

protocol writeValueBackDelegate {
    var fromStationValue: String! {get set}
}

class SelectedStationViewController: UITableViewController {
    @IBOutlet weak var stationFrom: UILabel!
    var delegate: writeValueBackDelegate! = nil
    var fromStationValue: String! = "None"

    override func viewDidLoad() {
        super.viewDidLoad()

        stationFrom.text = fromStationValue        
    }
}
4

1 に答える 1

3

だから私は、今日の初めに私が与えた答えを参照するだけです: Flappy Bird Coding Error in Swift

対応する xib またはストーリーボードでコントローラーを初期化する必要があります。例:

let storyboard = UIStoryboard(name: "myStoryboardName", bundle: nil);
let vc = storyboard.instantiateViewControllerWithIdentifier("myVCID") as UIViewController;

( Swift での viewController のインスタンス化と提示から)

そうしないと、View Controller はアウトレットを認識せず、nil になります。

于 2014-11-05T14:34:16.207 に答える