Swift初心者です。
func templateNavigationController(unselectedImage: UIImage,selectedImage: UIImage,rootviewController: UIViewController)-> UINavigationController { let nav = UINavigationController(rootViewController: rootviewController) nav.tabBarItem.image = unselectedImage nav.tabBarItem.selectedImage = selectedImage nav.navigationBar.tintColor = .black return nav }
上記コードは以下の認識であっているか見て頂きたいです。
① rootviewControllerでUIViewControllerを受け取り、UINavigationControllerを返す。
② ()でunselectedImageからUIViewControllerまで括ることによって 「unselectedImage」,「selectedImage」,「UIViewController」をUINavigationControllerからアクセスできる。
よろしくお願いします。
① templateNavigationController という関数 (またはメソッド) は引数を 3 つ (unselectedImage, selectedImage, rootviewController) 受け取り、UINavigationController 型の値を返します。
② templateNavigationController という関数 (またはメソッド) では、引数 unselectedImage, selectedImage, rootviewController にアクセスできます。(それらの引数を使って UINavigationController を作ってますが、「UINavigationController からアクセスできる」というのはちょっと違うような…。)
ありがとうございます。
①について
引数は、その関数で受け取るモノという考え方なんですね。
質問になってしまうんですが、
UINavigationController 型の値を返すとは以下の認識であっているでしょうか。
・後にUINavigationControllerのメソッドを利用したいため、ここではUINavigationController型の値を返している。
・返す型の値はUINavigationController 型だけという縛りはなく、UITabBarController型などの値も返せる(今回はエラーになるが)
②については、①の上記の認識が合っていれば理解できそうです!
「UINavigationController 型の値を返す」というのは UINavigationController 型の値を返すという意味です。UINavigationController はクラスなので、UINavigationController クラスのオブジェクトを返す、とも言えます。
「UINavigationController 型の値を返す」目的は、UINavigationController 型の値を使いたいからです。UINavigationController クラスのオブジェクトを使う目的は、一覧画面である項目を押したらその詳細画面が右からスライドしてきて、Back を押したら元に戻るような、いわゆるドリルダウン型の画面遷移を行うためです。その制御を UINavigationController クラスのオブジェクトが行うのので。(もちろんその際には UINavigationController クラスのメソッドを呼んだりもしますが、単にメソッドだけを利用したいのではなく、その型の値やオブジェクトそのものが必要だからです。)
UINavigationController と UITabBarController はどちらも UIViewController のサブクラスですが、UINavigationController と UITabBarController の間位には継承関係はないので、UINavigationController を返す関数やメソッドが UITabBarController の値を返すことはできません。
ありがとうございます!
理解できました!
回答1件
あなたの回答
tips
プレビュー