2013-05-02 7 views
0

У меня есть класс DisplayOptViewController, который является подклассом UICollectionViewController. Я хочу отобразить этот CollectionViewController, когда пользователь нажимает кнопку в панели навигации на моей текущей странице. Я могу загрузить CollectionView на кнопку Click, но панель навигации не подходит. Я хочу, чтобы пользователь мог видеть кнопку «Назад» в панели навигации, и нажатие кнопки должно вернуть его на текущую страницу. Я пытался сделать это через раскадровку, а также программно. Когда я пытаюсь это сделать с помощью раскадровки, сам ViewController не отображается, и когда я создаю объект контроллера представления программно, я не получаю панель навигации. Любая идея, как к этому?Как загрузить UICollectionViewController при нажатии кнопки на панели навигации?

Я пытался добавить этот код в моем viewDidLoad метода в DisplayOptViewController:

UINavigationBar *navBar=[[UINavigationBar alloc] init]; 
[[self navigationController] setNavigationBarHidden:NO animated:YES]; 
[self.navigationController.navigationBar addSubview:navBar]; 

Но панель навигации все еще не пришел. Незлая помощь.

обновление

Я загружая UICollectionView здесь

UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init]; 
[aFlowLayout setItemSize:CGSizeMake(140, 50)]; 
[aFlowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; 
DisplayOptViewController *vc=[[DisplayOptViewController alloc] initWithCollectionViewLayout:aFlowLayout]; 
[self presentViewController:vc animated:YES completion:nil]; 
+0

Вы могли бы лучше объяснить, что именно вы хотите? Из того, что я понимаю, когда пользователь нажимает кнопку на панели навигации, навигационный контроллер выталкивает коллекцию на экран, но скрывает панель навигации. Это то, что происходит? –

+0

Да, это то, что происходит.Я загружаю uicollectionView здесь - [код] UICollectionViewFlowLayout * aFlowLayout = [[UICollectionViewFlowLayout alloc] init]; [aFlowLayout setItemSize: CGSizeMake (140, 50)]; [aFlowLayout setScrollDirection: UICollectionViewScrollDirectionVertical]; DisplayOptViewController * vc = [[DisplayOptViewController alloc] initWithCollectionViewLayout: aFlowLayout]; [self presentViewController: vc animated: YES complete: nil]; [/ code] –

+0

Почему бы просто не использовать '[self.navigationController pushViewController: vc animated: YES]'? – geo

ответ

0

У вас есть несколько вещей, которые я вопрос,

[self.navigationController.navigationBar addSubview:navBar]; 

вы добавляете панель навигации в панели навигации .... сделайте это вместо этого

[self.navigationController setNavigationBar:navBar]; 

второй

[self presentViewController:vc animated:YES completion:nil]; 

вы представляете контроллер .... не толкания/внезапная его ....

[self.navigationController pushViewController:vc animated:YES]; 

попробовать что когда вы делаете это программно

как для раскадровки, возможно, у вас нет настроек, настроенных правильно, или свойства не установлены правильно или что-то в этом роде ... но я не могу его отладить

0

Если у вас есть проект на основе навигации, вам необходимо инициализировать контроллер навигации в самом делете приложения. Попробуйте код ниже, чтобы сделать панель навигации видна,

В методе didFinishLaunchingWithOptions приложения

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController = [[ViewController alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[self viewController]]; 
[[self window] setRootViewController:navigationController]; 
[self.window makeKeyAndVisible]; 
return YES; 

Теперь ваша панель навигации появится.

Смежные вопросы