Как я могу установить свойство .hidden объекта другого представления на UITabBarController - PullRequest
0 голосов
/ 08 февраля 2011

Дорогие все - у меня есть приложение на основе вкладок (запущено как приложение примера XCode).

Одна вкладка используется для выбора изображения (UIImagePickerController) - работает как задумано. Другая вкладка используется для отображения CoreGraphics поверх UIImageView, содержащего выбранное изображение. Это делается в drawRect: метод пользовательского UIView.

Мне нужно сбросить интерфейс в UIView при выборе нового изображения.

В настоящее время у меня есть метод -(IBAction)resetAll:(id)sender в моем UIView - когда он вызывается с кнопки на том же представлении, все сбрасывается, как предполагалось.

ОДНАКО, когда я вызываю метод resetAll из метода viewWillAppear файла ViewController.m:

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];    

TabBarEgAppAppDelegate *delegate = (TabBarEgAppAppDelegate *)[[UIApplication sharedApplication] delegate];


if(delegate.newphotopicked){

[myView resetAll:nil];

delegate.newphotopicked = NO;

}

NSLog в методе resetAll срабатывает, но параметры (такие как button.hidden = YES;) не устанавливаются.

Это потому, что UIView каким-то образом скрыт TabBarViewController? Как еще я могу сбросить свой вид при изменении вкладки (UIView не вызывает viewWillAppear, делает это?). Большое спасибо за то, что уделили мне время!

M @

Просто чтобы уточнить, ViewController имеет следующее в .h:

MyView *myView;

в .м

- (void)viewDidLoad {
myView = [[MyView alloc] initWithFrame:CGRectZero];

Вызов [myView resetAll:nil]; имеет тот же эффект, что и кнопки и вызовы в любом месте приложения, ВКЛЮЧАЯ сам UIView (MyView).

Теперь я знаю, что соединился или плохо классифицирован (пожалуйста, помогите).

M @

1 Ответ

0 голосов
/ 08 февраля 2011

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

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