我正在尝试使用应用程序图标上的3D触控实现快速操作,并且发生了一些非常奇怪的事情。
我正在做的图标快速操作应该是使用根视图控制器打开应用程序,隐藏一些视图,显示其他视图并检查更新。一切正常,直到我转到另一个视图控制器并回到主控制器,按下主页按钮并尝试快速操作。
如果我移动到另一个视图控制器返回到主视图,并尝试快速操作,视图将不再隐藏/取消隐藏,但检查更新方法正常工作。还调用了hide / unhide的代码,但它没有生效。
尝试使用performOnMainThread执行hide / unhide方法,尝试将其放在主线程上的调度中,但是没有任何效果。
的AppDelegate:
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
if ([shortcutItem.type isEqualToString:@"com.systems"])
{
self.shortcutAction = kShortcutActionSystems;
}
}
MainViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appBecameActive)
name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)appBecameActive
{
if ([appDelegate.shortcutAction isEqualToString:kShortcutActionUpdates])
{
if (authenticated)
{
[self showUpdates:nil];
[self checkForUpdates:nil];
}
else
{
[self showUpdates:nil];
}
}
}
checkForUpdates:始终被调用并始终执行请求。 showUpdates:总是被调用但是如果移动到另一个视图控制器并且返回,则隐藏/取消隐藏部分不起作用。
编辑:
在showUpdates中:我调用另一种方法:
- (IBAction)showUpdates:(id)sender
{
if (authenticated)
{
//[self showUpdatesAuthenticatedView];
[self performSelectorOnMainThread:@selector(showUpdatesAuthenticatedView) withObject:nil waitUntilDone:NO];
- (void)showUpdatesAuthenticatedView
{
_updatesTableView.dataSource = self;
[_updatesTableView reloadData];
_updatesIndicator.hidden = NO;
_systemsIndicator.hidden = YES;
_updatesTableView.hidden = NO;
_backTableView.hidden = NO;
_checkUpdatesOutlet.hidden = NO;
_systemTableView.hidden = YES;
_loginAskView.hidden = YES;
}