Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C:通过NSNotificationCenter更改选项卡栏控制器索引会导致问题_Ios_Objective C_Ios7_Uitabbarcontroller_Nsnotificationcenter - Fatal编程技术网

Ios 目标C:通过NSNotificationCenter更改选项卡栏控制器索引会导致问题

Ios 目标C:通过NSNotificationCenter更改选项卡栏控制器索引会导致问题,ios,objective-c,ios7,uitabbarcontroller,nsnotificationcenter,Ios,Objective C,Ios7,Uitabbarcontroller,Nsnotificationcenter,我有一张桌子。当选择某一行(注销按钮)时,将检查服务器和iPhone之间正在进行的任何当前同步。如果它仍在同步,我将使用viewDidLoad中的观察者在同步完成时通知我。然后,观察者调用logMeOut。如果不同步,则立即调用logMeOut 在didSelectRowAtIndexPath中调用时,更改选项卡索引效果非常好。但是当从NSNotificationObserver调用时,我可以看到索引0和3处的选项卡都以蓝色突出显示(这意味着系统选择了索引0,但未能取消索引3)。页面未更改;它仍

我有一张桌子。当选择某一行(注销按钮)时,将检查服务器和iPhone之间正在进行的任何当前同步。如果它仍在同步,我将使用viewDidLoad中的观察者在同步完成时通知我。然后,观察者调用logMeOut。如果不同步,则立即调用logMeOut

在didSelectRowAtIndexPath中调用时,更改选项卡索引效果非常好。但是当从NSNotificationObserver调用时,我可以看到索引0和3处的选项卡都以蓝色突出显示(这意味着系统选择了索引0,但未能取消索引3)。页面未更改;它仍然在索引3处显示相同的页面。我无法通过点击选项卡转到索引0。我必须点击索引1-3中的一个,然后再次点击索引0才能在那里导航

设置断点和日志语句表明正确调用了NSNotificationCenter。我在iPhone和Xcode模拟器上都进行了测试

//当观察员呼叫时

//从didselectrowatindexpath调用时

//syncengine.m的代码片段

if (self.needToLogOut) {
                NSNotification *notification = [NSNotification notificationWithName:@"canLogOutNow" object:nil];
                [[NSNotificationCenter defaultCenter] postNotification:notification];
            }

您是否可以共享同步引擎何时发布通知的片段尝试在通知上设置断点,并确保调用发生在主线程(线程0)上。NSNotificationCenter在调用它的线程上发布通知,如果它是后台线程,则不会工作。嗨,Ryan,你说得对。我在线程3上调用它。谢谢你是在主线程上发布通知吗?不确定tabbar的东西是否是线程安全的。可能会尝试在主线程上发布通知。
if (self.needToLogOut) {
                NSNotification *notification = [NSNotification notificationWithName:@"canLogOutNow" object:nil];
                [[NSNotificationCenter defaultCenter] postNotification:notification];
            }