segue を通してデータを渡す 質問する

segue を通してデータを渡す 質問する

私は、TableView コントローラと detailView を使用したシンプルな iOS アプリケーションを作成しています。私が望んでいるのは、segue を介してデータを渡すことだけです。

これはこんな感じです

このように見えます。

私が望んでいるのは、「Markíza」をクリックすると URL ビデオ番号 1 が開き、「TV JOJ」をクリックすると URL ビデオ番号 2 がプレーヤーで開くことです。

私のテーブルビューセル:

    struct Program {
        let category : String
        let name : String
    }


   var programy = [Program]()
        self.programy = [Program(category: "Slovenské", name: "Markíza"),
                         Program(category: "Slovenské", name: "TV JOJ")]

ベストアンサー1

Swift は Obj-C とまったく同じように動作しますが、新しい言語で作り直されています。あなたの投稿から得られる情報は多くありませんが、説明をわかりやすくするために、各 TableViewController に名前を付けましょう。

ホームテーブルビューコントローラー(これは上記のスクリーンショットです)

プレーヤーテーブルビューコントローラー(これは移動したいプレイヤー画面です)

そうは言っても、PlayerTableViewController では、渡されたデータを格納する変数が必要です。クラス宣言のすぐ下に、次のようなものを記述します (構造体を配列ではなく単一のオブジェクトとして格納する場合)。

class PlayerTableViewController: UITableViewController {

    var programVar : Program?

    //the rest of the class methods....

その後、新しい TableViewController にデータを送信する方法は 2 つあります。

1) prepareForSegueを使用する

HomeTableViewController の下部で、prepareForSegue メソッドを使用してデータを渡します。使用するコードの例を次に示します。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    // Create a variable that you want to send
    var newProgramVar = Program(category: "Some", name: "Text")

    // Create a new variable to store the instance of PlayerTableViewController 
    let destinationVC = segue.destinationViewController as PlayerTableViewController
    destinationVC.programVar = newProgramVar
    }
}

PlayerTableViewControllerが読み込まれると、変数はすでに設定され使用可能になります。

2) didSelectRowAtIndexPathを使用する

選択されたセルに基づいて特定のデータを送信する必要がある場合は、didSelectRowAtIndexPath を使用できます。これを機能させるには、ストーリーボード ビューで segue に名前を付ける必要があります (これを行う方法も知りたい場合はお知らせください)。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    // Create a variable that you want to send based on the destination view controller 
    // You can get a reference to the data by using indexPath shown below
    let selectedProgram = programy[indexPath.row]

    // Create an instance of PlayerTableViewController and pass the variable
    let destinationVC = PlayerTableViewController()
    destinationVC.programVar = selectedProgram

    // Let's assume that the segue name is called playerSegue
    // This will perform the segue and pre-load the variable for you to use
    destinationVC.performSegueWithIdentifier("playerSegue", sender: self)
}

これについて他に情報が必要であればお知らせください

おすすめ記事