セグを通過するデータ
質問
テーブルビューコントローラとdetailViewで簡単なiOSアプリを作っています。セグエを通してデータを渡したいだけです。
はこのような感じです。
私が望むのは、"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")]
どのように解決するのですか?
SwiftはObj-Cと全く同じように動作しますが、新しい言語で作り直されます。あなたの投稿から多くの情報を持っていませんが、私の説明を助けるために、それぞれのTableViewControllerに名前を付けてみましょう。
ホームTableViewController (これは上のスクリーンショットです)
PlayerTableViewController (移動したいプレイヤー画面です。)
ということで、PlayerTableViewControllerには渡されたデータを格納する変数を用意する必要があります。クラス宣言の直下に以下のように記述します(構造体を配列ではなく、1つのオブジェクトとして格納する場合)。
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を使用することができます。これを動作させるためには、ストーリーボードビューでセグエに名前を付ける必要があります(この方法を知る必要がある場合は、私に知らせてください)。
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)
}
他に必要な情報があれば教えてください。
関連
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み】Storyboardのログイン画面のベストプラクティス、ログアウト時のデータクリアの処理について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
iOS classic error Undefined symbols for architecture XXX:
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] コードサインエラーです。期限切れのプロファイルを削除した後、プロビジョニングプロファイルが見つからない
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?