2013-02-26 2 views
1

У меня есть VC с подвью. На subview level у меня есть кнопка. Я хочу, чтобы кнопка отображала обновляемое представление.Кнопка для запуска drawRect для перерисовывания вида

Код IBAction находится в VC. Все, что он сейчас делает, это переключить значение BOOL.

Назад в подземелье drawRect: метод - это код, который проверяет BOOL и соответственно меняет вид.

Мое наблюдение заключается в том, что при нажатии кнопки код IBAction запускается, переключает BOOL, но метод drawRect: не вызывается.

Я попытался вызвать drawRect вручную (не очень хорошая практика и не работал). Я попытался вызвать setNeedsDisplay, но это тоже не сработало (не удалось выяснить, как ссылаться на подвью, который создается программно).

Предложения приветствуются.

код IBAction тривиальна, но включены ниже:

- (IBAction)rotateWindowButtonWasPressed:(id)sender 
{ 
    // just flip the boolean here. Need to make the code change in drawRect: in top2View.m 
    if ([myGlobals gWinVertical]) 
     [myGlobals setGWinVertical:NO]; 
    else 
     [myGlobals setGWinVertical:YES]; 
    // Hoping this would force a redraw, but bounds have to change...:(
    //_top2ViewOutlet.contentMode = UIViewContentModeRedraw; 
} 
+0

Prettier ярлык: [myGlobals setGWinVertical:! [MyGlobals gWinVertical]]; –

+0

Спасибо slugster :) – Tony

ответ

0

Не уверен, что произошло - был ответ выше, что решить мою проблему, но теперь его нет? В любом случае - ответ заключается в том, чтобы создать кнопку программно, а затем я могу включить метод на уровне подзаголовка, где drawRect: есть, и с помощью setNeedsDisplay перерисовать изображение. Это против использования IB и наличия кода IBAction на уровне VC.

10

выдать DrawRect вызов, вызов setNeedsDisplay на представлении вы изменили .. ОС будет вызывать DrawRect на него и автоматически затрагиваемой пересекающиеся виды.

в вашем случае я думаю

[self.view setNeedsDisplay]

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