我知道手表应用程序打开父应用程序和发送/接收数据的功能WKInterfaceController openParentApplication和handleWatchKitExtensionRequest方法.
但是如何...在用户使用父应用程序并在父应用程序中执行操作(即更改背景颜色)的实例中,如何立即通知监视应用程序并执行相关操作手表呢?
我相信MMWormhole在这个例子中就足够了,这是我应该采取的最佳方法还是有替代方案?
我有一个UITabBarController,其中有4个标签。这些标签中的每个标签都是单独的UIViewController。我在这4个VC的每一个上都有一个对象,这些对象使用NSNotification来按某个对象时执行操作。4个VC都以相同的方式响应通知,因为它是每个页面上的相似对象。当按下此对象时,它将在当前视图控制器上显示一个视图。问题是,如果我现在移至其他3个选项卡中的任何一个,则该视图也位于其VC上。这是因为当在任何VC上按下通知时,所有4个选项卡上的通知都会得到响应。我需要它仅响应用户当前使用的VC,而不响应选项卡栏中的其他任何用户。
有没有办法使它正常工作?也许是一个阈值,您可以设置通知在被调用后可以执行其选择器的次数?这样,我可以将其设置为1,并且在任何给定时间(如果该通知被称为选择器)只能被调用1次。
我正在使用的对象实现类型要求我使用NSNotification,因此无法更改交互方式。
编辑:
此viewDidLoad方法位于我的选项卡栏中4个VC的顶级VC上。它们全部4个都直接使用它或从中继承。
- (void) viewDidLoad
{
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSelectItemFromCollectionView:) name:@"didSelectItemFromCollectionView" object:nil];
}
Run Code Online (Sandbox Code Playgroud)
动作处理程序:
- (void) didSelectItemFromCollectionView:(NSNotification *)notification
{
NSDictionary *cellData = [notification object];
if (cellData)
{
NewVC *pushToVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PushToVC"];
[self.navigationController pushViewController:pushToVC animated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
4个VC中的每一个都是a,UITableViewController并且具有带有可按下对象的单元格。此NSNotificationCenter操作使操作得以执行。