Viewcontroller представления должны отображаться очень медленно
Кажется, у меня возникла совершенно противоположная проблема, которая всплывает в моих поисках вопросов. У меня есть splitViewController, который, кажется, медленно обновляет свое главное представление после вызова setNeedsDisplay. В конце концов, запрос на обновление отрисовывается, но случайным образом происходит изменение от 5 до 150 секунд.
Если я немедленно поверну iPad, изменения в представлении будут немедленно отражены.
Макет:
SVC - Detail VC
\
+-Navigation VC
\
MasterVC
+--UILabel (hidden/unhidden)
|
+--UIButton
Все, что я хочу сделать, это скрыть / показать метку в MastVC, когда действие происходит в MasterVC. На viewDidLoad метка скрыта. Когда на MasterVC нажимают кнопку, ярлык становится невидимым, и тогда все просто не идет.
Я установил все под солнцем на "setNeedsDisplay", но ничто не заставляет это произойти так быстро, как должно. Если я даже запихнул все методы setNeedsDisplay в dispatch_async(dispatch_get_main_queue(), ^{ ... }, немедленных результатов нет (не то, чтобы я был в другом потоке, но после прочтения подобного было бы неплохо попробовать) вопросы).
Я сделал эти вызовы от SplitVC, NavVC, Master, каждого subVC, каждого subView, я даже настроил вызов Центра уведомлений от Master к SVC, чтобы SVC выполнял обновление специально после того, как метка была помечена как скрытая,
Все это начало казаться крайне неуместным, просто чтобы показать / скрыть простой ярлык. Особенно, когда все, что мне нужно сделать, чтобы ярлык появился правильно, это просто повернуть iPad.
Как я уже сказал, метка в конечном итоге отображается в правильном месте, поэтому она не находится за кадром или непрозрачна = 0 или что-то в этом роде.
Когда я нажимаю кнопку подключения, я звоню в Bluetooth Central Manager. Как только BCM подключается к устройству, я получаю ключ / значение NC, который подтверждает подключение. Это вызывает ярлык, чтобы быть unhid.
-(void) receiveBCMNotification: (NSNotification *) notification {
NSDictionary *userInfo = notification.userInfo;
NSLog(@"got a BCM notice: %@",userInfo);
if ([[userInfo allKeys] containsObject:ddkBltCentralManagerStatusKey]) {
if ([[userInfo valueForKey:ddkBltCentralManagerStatusKey] isEqualToString:ddvBltCentralMangerScanningStarted]) {
[self.refreshAvailablePatches beginRefreshing];
}
if ([[userInfo valueForKey:ddkBltCentralManagerStatusKey] isEqualToString:ddvBltCentralMangerScanningEnded]) {
[self.refreshAvailablePatches endRefreshing];
[self.availablePatchesTableView reloadData];
}
if ([[userInfo valueForKey:ddkBltCentralManagerStatusKey] isEqualToString:ddvBltCentralMangerDeviceConnected]) {
self.connectedToPatchVisual.hidden = NO;
[self.view setNeedsDisplay];
NSDictionary *newInfo = [NSDictionary dictionaryWithObject:ddvMasterSideViewNeedsDisplay forKey:ddkMasterSideViewNeedsDisplay];
[[NSNotificationCenter defaultCenter] postNotificationName: ncMasterSideNotifications object:nil userInfo:newInfo];
}
}
}