0

私のiPhoneアプリにMFSideMenuを使用し てサイドバーを実装しています。サイドバーの実装に成功しました。私のappdelegeteで次のコードを使用して

- (ViewController *)demoController {
    return [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
}

- (UINavigationController *)navigationController {
    return [[UINavigationController alloc]
            initWithRootViewController:[self demoController]];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

      self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        LeftSlideViewController *leftMenuViewController = [[LeftSlideViewController alloc] init];


        MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                        containerWithCenterViewController:[self navigationController]
                                                        leftMenuViewController:leftMenuViewController
                                                        rightMenuViewController:nil];


        container.navigationController.navigationItem.rightBarButtonItem=nil;
        self.window.rootViewController = container;
        [self.window makeKeyAndVisible];

        return YES;
}

今私の問題を説明しましょう..

UITablview がある LeftSideViewController というビュー コントローラー名があります。アプリケーションの起動時に、「ViewController」という名前の中央ビューとしてビュー コントローラーが 1 つあります。右側のビュー コントローラーは必要ないので、それを含めます。

現在、左サイドコントローラーに UITableview があり、その UITableview の行をクリックすると、中央のビューを変更する必要があります。

私の問題は、このコードを左側のView Controllerのuitableview delegeteメソッドに入れると、新しいView Controllerでcenterviewが変更されないためです。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
      // Load new front view
          MFSideMenuContainerViewController *menuController = (MFSideMenuContainerViewController*)((AppDelegate*)[[UIApplication sharedApplication] delegate]).viewController;

        PhotoGalleryViewController *SearchBarTableView=[[PhotoGalleryViewController alloc]initWithNibName:@"PhotoGalleryViewController" bundle:nil];
        [self.navigationController pushViewController:SearchBarTableView animated:YES];
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:SearchBarTableView];
        menuController.centerViewController=navController;
        //[menuController1 setRootController:navController animated:YES];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

左側のビューの UITableview 行のクリックに応じてビューを変更する方法を教えてください。

4

2 に答える 2

3

私もMFSideMenuを使っています。didSelectRowAtIndexPath を処理する方法は次のとおりです...

ただし、私はストーリーボードを使用しています。しかし、あなたのように、NavigationControllers 内に埋め込まれたビューコントローラーも持っており、この移行方法が機能することがわかりました。

if (indexPath.section ==1 ){
    if (indexPath.row==0){
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
        UITabBarController *destNav = [storyboard instantiateViewControllerWithIdentifier:@"MainTabBar"];
        [self.menuContainerViewController setCenterViewController:destNav];
    }
    if (indexPath.row==1){
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
        UINavigationController *destNav = [storyboard instantiateViewControllerWithIdentifier:@"TopNavID"];
        [self.menuContainerViewController setCenterViewController:destNav];
    }
    if (indexPath.row == 2){

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
        UINavigationController *destNav = [storyboard instantiateViewControllerWithIdentifier:@"OptionsNavID"];
        [self.menuContainerViewController setCenterViewController:destNav];

    }
}


[self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
于 2013-09-26T20:07:46.957 に答える