1

テーブル ビューの itens のリストであり、テーブル ビューのすべてのアイテムに詳細ビュー コントローラーを表示するアプリがあります。また、MMDrawerController (ルート ビュー コントローラー) をストーリーボード付きのサイド メニューとして実装します。アプリをディープ リンクし、アプリ デリゲートのアプリケーション オープン URL ソース アプリケーション アノテーション メソッドを使用してそれを処理しています。そのため、MMDrawerController を使用してこのメ​​ソッドから詳細ビュー コントローラーをプッシュしたいのですが、問題が発生しています。いくつかのコードを見てください:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
      DetalheRestauranteViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"detalheRest"];

      MMDrawerController* drawerController = (MMDrawerController *)self.window.rootViewController;
      // If I use this nothing happens        
      [drawerController.centerViewController.navigationController pushViewController:vc animated:YES];

      // If I use this nothing happens      
      [((MMDrawerController *)self.window.rootViewController).centerViewController.navigationController pushViewController:vc animated:YES];

     // If I use this I got the unrecognized selector error       
     [(UINavigationController*)self.window.rootViewController pushViewController:vc animated:NO];

    return YES;
}

誰かがこれで私を助けることができますか?

4

2 に答える 2

0

ディープ リンクと新しい iOS9 メニュー ショートカットを使用すると、UI コンポーネントを表示または操作するために、多くの場合、わずかな遅延が必要になることがわかりました。

すべての UI/MMDrawer コードを独自のメソッドに移動してみます。次に、アプリ デリゲートで openURL が呼び出されたときに、遅延して新しいメソッドを呼び出します。

したがって、ObjC では次のようになります。

 [self performSelector:@selector(showDetailView) withObject:nil afterDelay:0.3];
于 2016-05-25T14:02:28.260 に答える
0

この問題を解決しますか?

何度も試しました。最後に、今日はうまくいくことがわかりました:

[((UINavigationController *)((MMDrawerController *)self.window.rootViewController).centerViewController)  pushViewController:viewController animated:YES];

また

MMDrawerController *mvc = (MMDrawerController *)self.window.rootViewController;
UINavigationController *nvc = (UINavigationController *)mvc.centerViewController;
[nvc pushViewController:vc animated:YES];

この 2 種類の書き方は同じです。

ここで、vc は 1 つの DetalheRestaurantViewController インスタンスです。

于 2019-03-22T09:49:47.233 に答える