Перезагрузить или обновить UIView? - PullRequest
1 голос
/ 16 февраля 2012

Мое приложение позволяет пользователю разблокировать несколько уровней при покупке приложения. Чтобы указать, что уровень заблокирован, я изменяю значок альфа на 0,7, чтобы отличать его от уровней, которыми они владеют / могут получить доступ.

Мой код работает, проверяя NSUserDefaults для ключа BOOL на viewDidLoad:

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"com.productbundle.unlock"]){
    //set these levels to alpha = 0.7
}

Так что после успешной покупки было бы очень легко, если бы я мог просто обновить / перезагрузить UIView. Есть ли способ сделать это? Или есть другой способ добиться этого? Спасибо

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

Не думаю, что вам следует звонить [self viewDidLoad].Насколько я понимаю, это больше методов, которые вы реализуете в своем подклассе для реагирования на различные события, и в общем случае вы не должны вызывать их самостоятельно.Если вы захотите обновить материал, когда представление снова станет видимым, посмотрите больше на документацию по представлениям, изучите реализацию

-(void)viewDidAppear:(BOOL)animated
0 голосов
/ 16 февраля 2012

используйте setNeedsDisplay для обновления UIView.

[yourUIView setNeedsDisplay];
0 голосов
/ 16 февраля 2012

Я бы положил в -(void)viewWillAppear:(BOOL)animated

viewWillAppear = "Уведомляет контроллер представления о том, что его представление должно стать видимым."

Я бы проверил настройки вашего пользователя по умолчанию и вставил туда оператор if:

- (void)viewWillAppear:(BOOL)animated
{
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        if ([defaults boolForKey:@"com.productbundle.unlock"] == YES) {
            //set alpha to 1
        };


    [super viewWillAppear:animated];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...