質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

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

Q&A

解決済

1回答

224閲覧

セルを表すコードを解説して欲しい

amazon_106

総合スコア50

Swift

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

0グッド

0クリップ

投稿2019/02/16 09:56

編集2019/02/18 01:32

やっていること

##セルをタップして画面遷移する

// 画面遷移先のインスタンスを生成 let userProfileVC = UserProfileVC(collectionViewLayout: UICollectionViewFlowLayout()) // タップすると画面遷移 navigationController?.pushViewController(userProfileVC, animated: true)

1文目のUserProfileVCの中身を(collectionViewLayout: UICollectionViewFlowLayout())
と書く理由を教えて欲しいです。

コマンド&クリックでjumpしたら、UserProfileVCのデリゲート群を指定されて、UserProfileVCに関係することはわかったのですが、どうしてデリゲートを含めた書き方をするのかよくわかりません。

イメージ説明

イメージ説明

import UIKit import Firebase // private このファイル内のみアクセルできる 変換予測に出る private let reuseIdentifier = "Cell" private let headerIdentifier = "UserProfileHeader" class UserProfileVC: UICollectionViewController, UICollectionViewDelegateFlowLayout, UserProfileHeaderDelegate { // MARK: - Properties // オプショナル型でnilを許可してるのは、新しいコントローラがロードされる時、ユーザーは設定されていないから(下のfetchCurrentUserDataで取得される) var currentUser: User? //SearchVCのセルをタップした時、タップしたユーザーのProfileVCに遷移するように User.swiftを関連し、ユーザー情報を取得する // SearchVCからProfileVCに画面遷移した時、ロードするユーザー情報 var userToLoadFromSearchVC: User? override func viewDidLoad() { super.viewDidLimport UIKit import Firebase // private このファイル内のみアクセルできる 変換予測に出る private let reuseIdentifier = "Cell" private let headerIdentifier = "UserProfileHeader" class UserProfileVC: UICollectionViewController, UICollectionViewDelegateFlowLayout, UserProfileHeaderDelegate { // MARK: - Properties // オプショナル型でnilを許可してるのは、新しいコントローラがロードされる時、ユーザーは設定されていないから(下のfetchCurrentUserDataで取得される) var currentUser: User? //SearchVCのセルをタップした時、タップしたユーザーのProfileVCに遷移するように User.swiftを関連し、ユーザー情報を取得する // SearchVCからProfileVCに画面遷移した時、ロードするユーザー情報oad() // Uncomment the following line to preserve selection between presentations // self.clearsSelectionOnViewWillAppear = false // Register cell classes //collectionViewで使用するセルを登録 // forCellWithReuseIdentifier セルの再利用識別子 reuseIdentifier(任意の値)を // 新しいコレクションビューセルを作成するために使用するクラスを登録 self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) // profileページのためにセルにしたいファイルを登録 self.collectionView!.register(UserProfileHeader.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: headerIdentifier) // 背景色 self.collectionView.backgroundColor = .white // profileVCのタブを開く時、 if userToLoadFromSearchVC == nil { fetchCurrentUserData() } }

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

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

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

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

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

fuzzball

2019/02/18 00:23

UserProfileVCってなんですか?
amazon_106

2019/02/18 00:29

>nakasho_devさん すいません。通知に気付きませんでした。その資料を参考に直していきます! >fuzzballさん classです。
fuzzball

2019/02/18 00:37

そんなことは分かっています。ふざけてるんですか?
amazon_106

2019/02/18 00:38

え、ふざけてないです。 怒らないで下さい。
fuzzball

2019/02/18 00:43 編集

怒ってないです。(censored)にしているだけです。
amazon_106

2019/02/18 00:41

いや、それもやめて下さいよ。笑(ってつけていいのかな)
fuzzball

2019/02/18 00:44

ということで、UserProfileVCが何なのか教えて下さい。
amazon_106

2019/02/18 00:56

遷移先のclassを指定する為に書いたものです。って答えじゃ質問の趣旨と違うんですよね...? ユーザー編集する為に作られたSwiftファイルの中のclassです。も違いますかね?
fuzzball

2019/02/18 00:59

>>遷移先のclassを指定する為に書いたものです それは userProfileVC のことでは? 私が聞いているのは UserProfileVC のことです。
amazon_106

2019/02/18 01:09

UserProfileVCをコマンドクリックして、jumpする先はこんな感じで、僕にはこれしかわかりません。
fuzzball

2019/02/18 01:13

その下にコード書いてるんでしょ?なぜ分からないんですか? 中で何やっているかも分からないのに、書く(渡している)理由を聞かれても答えようがないのですが。
amazon_106

2019/02/18 01:30

怒らないでください。 classの中身ということだったでしょうか?
fuzzball

2019/02/18 01:47

怒ってないです。呆れているだけです。 そうです、中身です。 ところで「書く理由」というのは、 ・なぜ UICollectionViewFlowLayout() を渡しているのか? ・(言葉通り)なぜ (collectionViewLayout: UICollectionViewFlowLayout()) と書くのか? のどっちでしょうか?もしくは他の意味でしょうか?
amazon_106

2019/02/18 02:12

僕は呆れられることに定評があります。 質問時点では、 なぜ(collectionViewLayout: UICollectionViewFlowLayout()) と書くのか?だったんですが、 現時点では、 UserProfileVCでCellとUserProfileHeaderをregisterしている影響で(collectionViewLayout: UICollectionViewFlowLayout())と記入する必要があるのかなと思いました。 上記の考え方で合っているでしょうか。
guest

回答1

0

ベストアンサー

なぜ(collectionViewLayout: UICollectionViewFlowLayout()) と書くのか?

UserProfileVCが継承しているUICollectionViewControllerのイニシャライザが、

swift

1init(collectionViewLayout layout: UICollectionViewLayout)

だからです。
UICollectionViewFlowLayout(どういうレイアウトにするか)が必要です。

投稿2019/02/18 02:18

fuzzball

総合スコア16731

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

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

amazon_106

2019/02/18 02:25

UserProfileVCのUICollectionViewControllerをコマンドクリックして、イニシャライザ を確認したところ確かにそうなっていました。 遷移先のclassに加えて、継承してるものまで、書かないといけないんですね。 めちゃくちゃ勉強になりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問