XCode iPhone: скрытие UIToolbar в родительском UIViewController от дочернего UIScrollView - PullRequest
1 голос
/ 18 января 2010

У меня есть проект, похожий на пример Apple PageControl. У меня есть UIViewController "PhotoViewController", который содержит UIScrollView и UIToolbar. UIScrollView загружает другой XIB и UIViewController «PhotoScrollViewController».

В PhotoScrollViewController у меня есть UIButton, которая отображает изображение. У меня есть кнопка IBAction для этой кнопки, и я хочу нажать на нее, чтобы показать / скрыть панель инструментов UIToolbar в PhotoViewController.

В PhotoViewController.h у меня есть

@interface PhotoViewController : UIViewController <UIScrollViewDelegate> {
  IBOutlet UIToolbar *toolBar;
  ..
}

@property (nonatomic, retain) UIToolbar *toolBar;

Я попробовал несколько вещей в PhotoScrollViewController, например, импортировал PhotoViewController.h в PhotoScrollViewController.h и добавил его в интерфейс, затем попытался получить к нему доступ через мою функцию, например:

@implementation PhotoScrollViewController

- (IBAction)toggleMenu {
  photoViewController.toolBar.hidden = NO;
}

Но это не работает. Я также пытался удалить removeFromSuperView, self.parentViewController и некоторые другие вещи. Я не уверен, как скрыть эту панель инструментов (я тоже пробовал альфа, просто не могу получить доступ к панели инструментов).

Вместо этого я попытался добавить функцию в PhotoViewController, используя toolBar.hidden = YES. Это работает, если я выполняю функцию из PhotoViewController, но не работает, если я получаю к ней доступ из PhotoScrollViewController (с PhotoViewController * photoViewController в .h):

@implementation PhotoScrollViewController

- (IBAction)toggleMenu {
  photoViewController.toolBar.hidden = NO;
  [photoViewController toggleTopMenu];
  [[PhotoViewController alloc] toggleTopMenu];
}

@implementation PhotoViewController

- (IBAction)toggleTopMenu {
  toolBar.hidden = NO;
}

Я также попытался вместо этого добавить панель инструментов в PhotoScrollViewController, и я могу переключить ее, но я не могу понять, как сказать основному UIViewController отклонить PhotoViewController ... так, каким бы способом я не атаковал эту проблему, я не знаю как правильно обмениваться данными между UIViewControllers .. и документация, которую я читаю, похоже, следует тому, что я пробовал.

Ответы [ 2 ]

1 голос
/ 14 марта 2011

[photoViewController.navigationController setToolbarHidden: YES animated: NO];

Это работает, только если photoViewController помещается в UINavigationController. В противном случае установите toolBar.hidden = YES.

1 голос
/ 19 января 2010

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

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

2: Передавать ссылки на PhotoViewController при создании или отображении PhotoScrollViewController. Вы говорите, что это не работает:

 @implementation PhotoScrollViewController

 - (IBAction)toggleMenu {
     photoViewController.toolBar.hidden = YES;
 }

Единственный способ, которым это может не сработать, если ваша ссылка на photoViewController равна нулю. Где / как это установить?

...