🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

618閲覧

UITableViewの使用方法に関しての質問

infra____

総合スコア90

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/02/28 10:12

編集2021/02/28 10:21

・質問内容(ソースコードと実行結果に関しては以下記載あり)
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}

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/02/28 10:26

1. numberOfRowsInSection が CountryList.count つまり 5 を返してるから。(その後、必要に応じて UITableView が cellForRowAt を呼び出す。) 2. その関数というかメソッドを、iOS が呼び出すから。
infra____

2021/02/28 10:38

返信ありがとうございます。 1→解決しました。ありがとうございます。 2.→iosの正体とは、具体的にどういったプログラムですか?
infra____

2021/02/28 11:16

>Java でも GUI プログラムは「関数が定義されているだけなのに、ビルドされると反映される」ですよ。 →良く良く考えればそうですねw自分の記述が恥ずかしいです。 qiitaの記事共有ありがとうございます。 少し前進した気がします。 今後もよろしくお願いします。
infra____

2021/02/28 11:18

また、回答欄に記載していただければ、高評価に認定させて頂きます。 簡易的な一文を回答欄に記載お願いします。
guest

回答1

0

ベストアンサー

  1. numberOfRowsInSection が CountryList.count つまり 5 を返してるから。

(その後、必要に応じて UITableView が cellForRowAt を呼び出します。)
2. その関数というかメソッドを、iOS というか GUI フレームワークが呼び出すから。(Java でも同様。)
詳しくは、イベント駆動プログラミングについて調べてみると良いでしょう。
参考: イベント駆動プログラミング - Qiita

投稿2021/02/28 11:42

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問