ZUUIRevealController - нажмите на вид спереди, нажав на ячейку таблицы в заднем контроллере - PullRequest
3 голосов
/ 17 февраля 2012

Я играю с великолепной библиотекой ZUUIRevealController. Однако я не могу запрограммировать его, чтобы пользователь мог нажать на ячейку в заднем контроллере. Затем задний контроллер должен уйти и отобразить новый видовой контроллер на виде спереди.

Я настроил свой проект так:

    VGViewController *frontViewController;
RevealController *rearViewController;

frontViewController = [[VGViewController alloc] initWithNibName:@"VGViewController" bundle:nil];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];

rearViewController = [[RevealController alloc] initWithNibName:@"RevealController" bundle:nil];

ZUUIRevealController *revealController = [[ZUUIRevealController alloc] initWithFrontViewController:self.navigationController rearViewController:rearViewController];

[frontViewController release];
[rearViewController release];

self.window.rootViewController = revealController;
[revealController release];
[self.window makeKeyAndVisible];
return YES;

Я надеюсь, что кто-то может мне помочь! : D

1 Ответ

4 голосов
/ 21 февраля 2012

рад, что вы нашли симпатию в библиотеке.

Ваш проект, кажется, настроен правильно, если я ничего не упускаю, хотя логически я не могу следить за тем, как задний элемент управления ViewViewController <=> RevealController, ноэто нормально, я думаю.

Чтобы ответить на ваш вопрос: чтобы отобразить другой frontViewController, скажем, нажав на ячейку в RearViewController, вам нужно запустить этот фрагмент кода в соответствующем методе (скажем: tableView:didSelelctRowAtIndexPath:)

// RearViewController.m file in some method:
// - Let's grab a reference to the revealController first:
ZUUIRevealController *revealController = [self.parentViewController isKindOfClass:[ZUUIRevealController class]] ? (ZUUIRevealController *)self.parentViewController : nil;

// Check if we're not attempting to swap the current FrontViewController for exactly the same controller over again...
if (![revealController.frontViewController isKindOfClass:[NewFrontViewController class]])
{
        NewFrontViewController *newFrontViewController;

        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
        {
            newFrontViewController = [[NewFrontViewController alloc] initWithNibName:@"NewFrontViewController_iPhone" bundle:nil];
        }
        else
        {
            newFrontViewController = [[NewFrontViewController alloc] initWithNibName:@"NewFrontViewController_iPad" bundle:nil];
        }

        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:newFrontViewController];
        [newFrontViewController release];
        [revealController setFrontViewController:navigationController animated:NO];
        [navigationController release];
}

Для чего предназначен этот фрагмент кода, он захватывает ссылку на родительский элемент tailViewControllers (который должен быть reveController) и назначает ему новый экземпляр frontViewController, вызывая [revealController setFrontViewController:navigationController animated:NO];

Надеюсь, что это решит вашу проблему: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...