我似乎有一个完全相反的问题,弹出我的问题搜索。在调用setNeedsDisplay之后,我有一个splitViewController似乎在更新其主视图时遇到了很慢的时间。最终会得到更新请求,但是在更改发生后,它会随机发生在5到150秒之间。
如果我立即旋转iPad,会立即反映视图更改。
布局是:
SVC - Detail VC
\
+-Navigation VC
\
MasterVC
+--UILabel (hidden/unhidden)
|
+--UIButton
我想要做的就是在MasterVC中执行操作时隐藏/取消隐藏MastVC中的标签。在viewDidLoad上,标签是隐藏的。当在MasterVC上按下按钮时,标签将被取消隐藏,然后事情就不会发生。
我已将太阳下的所有东西设置为" setNeedsDisplay",但没有任何东西可以让它尽可能快地发生。如果我甚至将所有setNeedsDisplay方法推送到dispatch_async(dispatch_get_main_queue(),^ {...};没有立即结果(不是我在另一个线程上,但尝试追求似乎是件好事)阅读类似的问题)。
我已经从SplitVC,NavVC,Master,每个subVC,每个subView进行了这些调用,我甚至设置了从Master到SVC的Notification Center调用,让SVC在标签出现后专门进行更新。被标记为未被隐藏。
这一切似乎都非常偏离轨道,只是为了显示/隐藏一个简单的标签。特别是当我需要为标签正确显示时,只需旋转iPad即可。
正如我所说,标签最终显示在正确的位置,因此它不会偏离帧或不透明= 0或类似的东西。
当我按下连接按钮时,我打电话给Bluetooth Central Manager。一旦BCM连接到设备,我就会得到一个确认连接的NC密钥/值。这会触发标签取消隐藏。
-(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];
}
}
}