0

スクロール ビューの scrollsToTop を除くすべてのナビゲーションが適切に機能するように、MFSideMenu の実装に成功しました(具体的には、私の TableViewControllers と、UIscrollview がフレーム全体を占める 1 つの ViewController で)。各TableViewで有効になっているにもかかわらず、scrollsToTopが機能していません。

MFSideMenu をプロジェクトから削除したため、問題の原因は MFSideMenu であり、scrollsToTop は正常に動作していることがわかります。

そこで、起動時に AppDelegate から MFSideMenu を呼び出す方法を次に示します。

//Instantiate the Side Menu and the center view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"MainTabBar"];

SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
UINavigationController *leftViewNavigationController = [[UINavigationController alloc] initWithRootViewController:leftSideMenuController];
MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                containerWithCenterViewController:tabBarController
                                                leftMenuViewController:leftViewNavigationController
                                                rightMenuViewController:nil];

self.window.rootViewController = container;
[self.window makeKeyAndVisible];

私が関心を持っている TableView は、上記のコードで参照されている tabBarController に埋め込まれている NavigationControllers に埋め込まれています。このコード ブロックを削除すると、scrollsToTop が正しく機能します。

どうにかしてTableViewControllersを含めるようにコンテナを調整する必要があると思います。それを行う方法についてのアイデアはありますか?

4

1 に答える 1

0

私自身の質問への答え:

問題は、ナビゲーション コントローラー内に左側のメニューがあったことです。だから私はそれを放棄し、代わりに使用するメニュー コントローラーのストーリーボード レイアウトを作成しました。そして、そのストーリーボード レイアウトにナビゲーション バーを追加して、このバージョンの MFSideMenu に通常表示される黒いスペースを隠しました。

したがって、AppDelegate の新しいウィンドウ設定は...

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UITabBarController *tbc = [storyboard instantiateViewControllerWithIdentifier:@"MainTabBar"];


//Then put get the left side menu controller, but inside of a navcontroller
SideMenuViewController *leftSideMenuController = [storyboard instantiateViewControllerWithIdentifier:@"SideMenu"];
MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                containerWithCenterViewController:tbc
                                                leftMenuViewController:leftSideMenuController                                                    rightMenuViewController:nil];

self.window.rootViewController = container;
[self.window makeKeyAndVisible];

他の UIViewController のスクロールビューの問題は、Autolayout の問題であることが判明しました。

于 2013-09-30T18:28:24.970 に答える