・質問内容(ソースコードと実行結果に関しては以下記載あり)
1.下記ソースコードの④に関して、繰り返しを命令する記述がないと思うが、なぜ④のメソッドを記述するだけで、セルが5つ生成されるのでしょうか。
2.関数が定義されているだけなのに、なぜビルドされると反映されるのでしょうか?
例えば、javaだと下記のように、インスタンス生成→メソッド実行の流れだと思います。
java
1 2class student{ 3study(){} 4 5} 6 7 8student student1 = new student() 9student1.study() 10
swift
1import UIKit 2 3// ①プロトコル(UITableViewDataSource, UITableViewDelegate)の追加 4class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 5 6 // ②テーブルに表示するデータの準備 7 var CountryList = ["アメリカ", "中国", "日本", "ドイツ", "イギリス"] 8 9 // 元からあるコード 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 } 13 14 // ③テーブルの行数を指定するメソッド(必須) 15 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 16 return CountryList.count 17 } 18 19 // ④セルの中身を設定するメソッド(必須) 20 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 21 // セルを取得する 22 let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "mycell", for: indexPath) 23 // セルに値を設定する 24 cell.textLabel!.text = CountryList[indexPath.row] 25 return cell 26 } 27 28}
1. numberOfRowsInSection が CountryList.count つまり 5 を返してるから。(その後、必要に応じて UITableView が cellForRowAt を呼び出す。)
2. その関数というかメソッドを、iOS が呼び出すから。
返信ありがとうございます。
1→解決しました。ありがとうございます。
2.→iosの正体とは、具体的にどういったプログラムですか?
Java でも GUI プログラムは「関数が定義されているだけなのに、ビルドされると反映される」ですよ。
https://qiita.com/tabachain/items/bfb3573c0c6a37552579
>Java でも GUI プログラムは「関数が定義されているだけなのに、ビルドされると反映される」ですよ。
→良く良く考えればそうですねw自分の記述が恥ずかしいです。
qiitaの記事共有ありがとうございます。
少し前進した気がします。
今後もよろしくお願いします。
また、回答欄に記載していただければ、高評価に認定させて頂きます。
簡易的な一文を回答欄に記載お願いします。
回答1件
あなたの回答
tips
プレビュー