UIPopOverController с UINavigationController с Xcode 4.2.1 - PullRequest
0 голосов
/ 07 февраля 2012

это может показаться простым, но почему-то я не могу выйти из этого.Я создал пустое приложение, добавил два элемента tabBar, создав их в файлах AppDelegate.h и AppDelegate.m.Теперь для моего второго элемента tabBar, когда пользователь щелкает второй элемент tabBar, я хочу отобразить popOverController.Я программно создал это, перейдя по этой ссылке Ссылка .Теперь моя проблема в том, что я хочу использовать Navigation Controller в своем коде, где я создал свой popOverController (AppDelegate.m), так что в моем popOverController.m я хочу использовать NavController, чтобы выдвигать другие представления.Если у кого-то есть простой способ достижения этого, был бы оценен.

Спасибо

1 Ответ

1 голос
/ 07 февраля 2012

Я немного запутался в том, где твоя проблема.То, что вы пытаетесь сделать, возможно и должно быть прямым.Если ваша проблема заключается в том, что представление Next не перемещается, потому что в popoverController у вас нет доступа к self.navigationController.Это простое решение, создайте переменную UINavigationController и передайте navigationController вашему всплывающему оконному устройству или используйте уведомления, чтобы передать то представление, которое нужно отправить обратно в ваш AppDelegate.

РЕДАКТИРОВАТЬ

Вы можете использоватьэто для прослушивания уведомлений:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(popOverViewControllerSelected:) name:@"popOverViewSelectedViewToPush" object:someObjectTellingYouWhatViewToPush];

Затем используйте это для отправки уведомлений:

[[NSNotificationCenter defaultCenter] postNotificationName:@"popOverViewSelectedViewToPush" object:@"ViewController1"];

Селектор будет именем вашей функции (я просто поместил описательное имя "popOverViewControllerSelected")и объект должен был бы быть информацией о том, какой viewController выдвинуть (то есть 1,2,3 или @ "view1").Тогда вам понадобится:

- (void)popOverViewControllerSelected:(id)sentObject
{
     // If your passing an NSNumber could use a switch
                 switch ((int)sentObject) {
            case 0:
                //Push This view
                break;
            case 1:
                //Push that view
                break;
            case 2:
                //Push someother view
                break;
            default:
                break;
        }
}

Другой способ, о котором я говорил, это добавить в вас popOverViewController.h

@interface .........
{
     UINavigationController *navController;
}
@property (nonatomic, retain) UINavigationController *navController;

В вашем popOverViewController.m добавить:

@synthesize navController;

Затем, куда бы вы ни добавляли popOverViewController, просто добавьте:

[popOverViewController setNavController:self.navigationController];

И теперь в вашем PopOverViewController вы можете вызвать:

[navController pushViewController:someViewController animated:YES];

Но я рекомендую сделать первый вариант,

...