Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > iOS > UIViewController + UIView


Автор: estra 19.7.2012, 13:07
Нужна помощь (сильно не пинайте, в iOS я новичок smile)

Есть UIViewController и в нем 2 UIView (view и view2). При старте приложения на экране видим view, в процессе работы открывается view2 (view addSubview:view2). Далее в методе контроллера willAnimateRotationToInterfaceOrientation мне нужно в зависимости от того, какой view сейчас виден, сделать те или иные действия. Как проще (правильнее) это сделать?

Я думал прокатит чтото вроде
Код

if (self.view == view2)

но так не получается.

хотелось бы найти решение (по возможности) без использование дополнительных переменных, которые надо устанавливать/сбрасывать при показе/скрытии view.

Автор: Maksys 19.7.2012, 13:35
Кстати у UIView есть свойство tag, дай им уникальные теги и сможешь их по ним индетнифицировать

Добавлено @ 13:40
Цитата(estra @  19.7.2012,  16:07 Найти цитируемый пост)
if (self.view == view2)

Блин ты не понимаешь строения вьюх
 у контроллера self  априори есть его стандартная view
view2  же скорее ты добавил через addSubview?  Если так то чтоб ее сравнить тебе придется залезть на уровень ниже:

self.view.subviews-
                           |-view1
                           |-view2

В таком случае ты можешь их сравнивать только с дочерними. Но это если только ты не заменяешь self.view другой view2.

Добавлено @ 13:43
Если ж со сменой вьюх не получится, попробуй контроллер поменять: как это делается можно посмотреть советhttp://forum.vingrad.ru/forum/topic-352274/kw-uibutton.html

Автор: estra 19.7.2012, 13:57
Цитата(Maksys @  19.7.2012,  13:35 Найти цитируемый пост)
self.view.subviews-
                           |-view1
                           |-view2

В таком случае ты можешь их сравнивать только с дочерними. Но это если только ты не заменяешь self.view другой view2. 


как именно?
if (self.view.subview == view2) не проходит.

Автор: Maksys 19.7.2012, 14:22
выведи в NSLog(@"%@",self.view.subviews);
ты должен увидеть все подвьюхи и свой view2.
для того чтоб сравнить:
Код

if([self.view.subviews objectAtIndex:0]==view2) 

Автор: estra 19.7.2012, 14:33
Цитата(Maksys @  19.7.2012,  14:22 Найти цитируемый пост)
выведи в NSLog(@"%@",self.view.subviews);

вывел, 5ая запись по попядку
делаю так
Код

if((UIView *)[self.view.subviews objectAtIndex:4]==view2)

не работает

Добавлено через 11 минут и 10 секунд
Сделал через Tag, для начала сойдет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)