1つのビューコントローラを別のビューコントローラから参照する際に問題があります。コードは機能しますが、警告が表示され、私は間違っていると思います。 controller
がNavigationController
にあるtableView
のデータをリロードしようとしています。ViewController階層を正しくトラバースするには?
AppDelegateから:このようなメッセージと間違って何
これは動作しますがXcodeのはselectedViewController
がnavigationController
を返すことを知らないため
[self.tabBarController.selectedViewController.topViewController.tableView reloadData];
は、私は警告request for member 'topViewController' in something not a structure or union
を取得します。だから私は、次の操作を行うことができます:
をしかし、私はこの警告を得る:incompatible Objective-C types initializing 'struct UIViewController *', expected 'struct UINavigationController *'
はどこまで私はこれで行くことがありますか?最初の行が機能します。 「正しい方法」に到達するには、8行のコードが必要ですか?
私はあなたのポイントを見ます。このアクションを開始しているイベントは、アプリケーションに 'application:handleOpenURL'を介して渡されたファイルです。私が 'tableViewController'の中でメソッドを呼び出すと、このアクションを処理させることになります(これは良い考えです)。 'AppDelegate'から' tableViewController'を一度参照する必要があります。私はこの問題に関連するだけでなく、しばしばこのジレンマに遭遇します。それは私が常にスパイダーのウェブであるポイントに別のプロパティで1つのオブジェクトを格納しているようだ。だからこそ私はコードの最初の行を、それを避けるために試みていました。 – Andrew