2017-05-12 17 views
0

誰かが私に次のコード行と好みの違いの正確な違いを教えてもらえますか?iOSでRootViewControllerを探す最良の方法は何ですか

UIViewController *viewController = [UIApplication sharedApplication].keyWindow.rootViewController; 
UIViewController *viewController1 = [[[UIApplication sharedApplication].delegate window] rootViewController]; 
UIViewController *viewController2 = [[[[UIApplication sharedApplication] windows] lastObject] rootViewController]; 
UIViewController *viewController3 = [[[[UIApplication sharedApplication] windows] firstObject] rootViewController]; 
id viewController4 = [[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] nextResponder]; 

私はNSObjectクラスからUIAlertControllerを示さなければならないと。

+0

コントローラから警告を生成するために、代理人、ブロック、最悪の場合はNotificationCenterを使用してください。 – SeanLintern88

+2

['XY'](https://meta.stackexchange.com/questions/66377/)の臭いがあります。何が問題なのか)問題はここにあります。非UIコンポーネント経由でアラートを表示する場合は、デザインに間違いがあります。あなた自身の利益のためにできるだけ[MVC](https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html)パターンに固執する必要があります。 – ozgur

+0

@OzgurVatansever、お返事ありがとうございます。実際、私はViewControllerクラスを含まないライブラリに取り組んでいます。誰か(顧客)が私の図書館からメソッドを呼び出すとき、何かが間違っていたら、エラーメッセージを顧客に返すのではなく、警告を表示する必要があります。そのために、私はViewController(ルート)を顧客のアプリケーションからアラートを表示させたいと思っています。私が間違っているなら助言してください。 –

答えて

0

ビューコントローラのインスタンスでは、self.navigationControllerを使用して現在のナビゲーションコントローラを取得できます。次に、現在のナビゲーションコントローラのviewControllersプロパティを取得できます。この配列は現在のナビゲーションスタックを表し、最初のオブジェクトルートビューコントローラです。

関連する問題