У меня проблемы с setNeedsDisplay. У меня есть UIView с большим количеством суб UIViews, созданных в Inteface Builder. У меня также есть кнопка с IBAction. В этом IBAction я хочу перерисовать/перезагрузить все UIViews (или все UIElements, такие как UILabel, UIWebView и т. Д.).перезагрузить/обновить subViews - setNeedsDisplay не работает
Я делаю это, что не работает для меня, не знаю почему ..:
//redraw the UIViews
[self.view_card_0 setNeedsDisplay];
[self.view_card_1 setNeedsDisplay];
[self.view_card_stapel setNeedsDisplay];
//other UI Elements
[self.webView_0 setNeedsDisplay];
[self.webView_1 setNeedsDisplay];
[self.webView_stapel setNeedsDisplay];
[self.lblCardTitle_0 setNeedsDisplay];
[self.lblCardTitle_1 setNeedsDisplay];
[self.lblCardTitle_stapel setNeedsDisplay];
[self.img_card_0 setNeedsDisplay];
[self.img_card_1 setNeedsDisplay];
[self.img_card_stapel setNeedsDisplay];
Что делать, чтобы перерисовать/перезагрузить/обновить все UIElements/UIViews и Subviews?
EDIT 1:
Как я загрузить вид:
detailViewController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];
detailviewcontroller не имеет ViewController, просто UIViews, здесь hierarchie:
- UIView
- UIViewContainer
--- UIView0
--- UIView1
--- UIViewStapel
Что я ожидаю сделать:
* Я не хочу, чтобы сбросить UIView, я хочу, чтобы изменить фон и их содержание. *
У меня в моем подробном представлении много подвид (uiviews), см. Выше иерархию. Я показываю содержимое в UIViews, контент поступает из coreData.
View1 содержит текущую строку coreData.
View0 содержит предыдущую строку coreData.
ViewStapel содержит следующую строку coreData.
С IBAction я хочу итерацию строки CoreData, отобразить следующую строку в текущей, если действие called..and так далее ..
В Бревенчатый, данные изменяются, но не отображается в UIViews , Для этого мне нужно перерисовать или перезагрузить или что-то вроде этого, чтобы отобразить текущие данные.
EDIT 2: решаемые
Я поставил код в новый метод и вызывать этот метод решить мою проблему.
Почему вы это делаете? Что вы ожидаете от этого? Обычно вызов '-setNeedsDisplay' на каком-то другом элементе пользовательского интерфейса не будет * ничего *, потому что если элемент пользовательского интерфейса должен обновить свой экран (в ответ на изменение свойств), он уже сам вызовет этот метод. –
Я меняю контент, а также цвет/изображение на этом IBAction. контент поступает из coreData. Мне нужно перерисовать uiviews, чтобы отобразить изменения в ibaction. – brush51
setNeedsDisplay просто перерисовывает представление, он не сбрасывает его свойства (например, цвет). Для этого вам придется перезагрузить их из файла nib (см. Ответ ниже). –