Viewcontroller视图需要显示非常慢

时间:2017-04-21 21:44:26

标签: ios ipad uiviewcontroller uisplitviewcontroller setneedsdisplay

我似乎有一个完全相反的问题,弹出我的问题搜索。在调用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];

    }
}

}

0 个答案:

没有答案