我无法从新项目中运行watchkit应用程序.如果我运行Apple的示例项目,它运行正常.如果我通过添加watchkit的目标将watchkit添加到我现有的项目中.然后运行它我得到一个黑色的屏幕与时间,即使在我的故事板我有一个接口控制器设置为主蓝色背景.这行代码被调用.
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[self.listTable setNumberOfRows:5 withRowType:@"List"];
NSLog(@"%@ will activate", self);
}
Run Code Online (Sandbox Code Playgroud)
我的iPhone主应用程序(iPhone应用程序)无法在模拟器上运行.
这基本上就是我所看到的.

如何在WKInterfaceTable中实例化两个不同的动态行模板?对于一个模板,我使用函数
[self.stocksTable setNumberOfRows: self.stocksData.count withRowType:@"TableRow"];
TableRow *row = [self.stocksTable rowControllerAtIndex:i];
Run Code Online (Sandbox Code Playgroud)
问题:如何有两种类型的行?
我有一个用户对象,我需要存储在NSUserDefaults中并与iOS 8扩展应用程序(Watchkit)共享.在主容器应用程序中,我可以毫无问题地对对象进行编码和解码.但是,当我尝试在Extension中检索存储的用户对象时,出现"'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class"错误.
据我所知,NSCoding已在对象中正确实现(我能够在'main'应用程序中对对象进行编码和解码).
用于存储用户对象的"容器"应用中的代码.
//Store user data in NSUserDefaults
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mygroup"];
SFUserAccount *user = [SFUserAccountManager sharedInstance].currentUser;
NSData *userEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:user];
[defaults removeObjectForKey:@"SF User Acct1"]; //remove any old values
[defaults setObject:userEncodedObject forKey:@"SF User Acct1"];
[defaults synchronize];
SFUserAccount *decodedUser = [NSKeyedUnarchiver unarchiveObjectWithData:userEncodedObject];
Run Code Online (Sandbox Code Playgroud)
上面的最后一行在主应用程序中执行测试解码工作正常.
从NSUserDefaults检索并在扩展目标中解码的代码如下.
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mygroup"];
NSData *archivedUser = [defaults objectForKey:@"SF User Acct1"];
if (archivedUser){
SFUserAccount *user = [NSKeyedUnarchiver unarchiveObjectWithData:archivedUser];
}
Run Code Online (Sandbox Code Playgroud)
在扩展代码中,我得到一个"'NSInvalidUnarchiveOperationException',原因:'*** …
有没有办法关闭WatchKit应用程序?
在iOS模拟器中,有一个主页按钮(cmd + shift + h)将触发关闭应用程序事件.我想知道WatchKit模拟器中是否有类似的东西?
问题 - 我有一个WKInterfaceController,我从来没有收到" didDeactivate"方法调用.
我试图在Apple手表应用程序上并排放置2个WKInterfaceButton项目.我有一个WKInterfaceGroup,我将其布局设置为水平.这允许我将按钮彼此相邻放置.问题是让它们完全并排放置并填充屏幕宽度并自动调节,无论手表大小(38或42mm).目前我将一个左右对齐.然后调整宽度我必须手动调整宽度,直到它看起来正确.这似乎有点太难编码,因为它不允许任何未来的手表屏幕尺寸变化.
我需要的是一种将WKInterface元素(在本例中为按钮)设置为手表可用尺寸的一半的方法.在普通的应用程序中,您可以使用
uiElementWidth = [UIScreen mainScreen].bounds.size.width/2
Run Code Online (Sandbox Code Playgroud)
WatchKit中有等价物吗?
简单的问题:WKInterfaceLabel如果文本太长而无法放入标签的框架内,是否有办法制作卷轴?类似于UITextView什么?
我在通知回来之后尝试更改按钮的标题,但它根本没有响应.我检查了它不是零并检查我分配的文本,一切都很好.我做了属性类型strong而不是weak成功.
- (void) setButtonTitleFromSelectedSearchResult:(NSNotification *)notif
{
[self popController];
self.sourceMapItem = [[notif userInfo] valueForKey:@"SelectedResult"];
NSLog(@"The Selected Result is: %@", self.sourceMapItem.name);
//Testing
NSLog(@"%@", self.fromButton); // check it's not nil
[self.fromButton setTitle:self.sourceMapItem.name];
}
Run Code Online (Sandbox Code Playgroud) 有没有办法从Apple Watch获取传感器数据?例如,如何从Apple Watch连接并获取心率到我的应用程序?这些是我在我的应用中需要执行的步骤:
我知道它如何适用于BT上的其他HR监视器.界面是否类似?或者应该依靠HealthKit来实现这一目标?
我的Apple Watch应用程序已被App Store拒绝,因为该图标未出现在手表主屏幕上.我在模拟器中看不到任何图标,iPhone模拟器上的配套应用程序已选择我的应用程序出现在手表上并有一个图标.
每个Apple Watch图标都在images.xcassets中提供,这些图标存在于主iPhone应用程序,WatchKit扩展程序和WatchKit应用程序中.
请告诉我如何找出问题所在.
这些是我的WatchKit应用程序包中的图标.

我还根据需要将一个1024x1024图标上传到iTunes Connect.
我的属性检查器为我的WatchKit应用程序的Images.xcassets显示了这个.

我仍然在寻找图像集设置屏幕.
在WatchKit应用程序Info.plist中,Icon files下只有一个图标,icon40.png.
找到了现在的图像集.

我实际上正在使用具有这些设置的AppIcon图像集

40pt图像是80x80 PNG,44pt是88x88 PNG.AppIcon设置中的WatchKit目标指向我的iPhone应用程序Images.xcassets,其中包含这些图标.
现在将使用此信息重新提交到App Store并希望获得最佳效果.
我正在版本7.0 beta 5上运行WatchOS 2.0。我正在通过iWatch App运行iOS。
如图所示,我设置了目标。
我的iOS的ViewController和WatchKitExtension的Interface Controller都已激活WCSession并被设置为委托。
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
NSLog(@"iOS App WCSession is supported");
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试将userInfo从Watch发送到iOS:
NSDictionary *userInfo = [[NSDictionary alloc]initWithObjectsAndKeys:@"testingURL", @"outputURL", nil];
[[WCSession defaultSession] transferUserInfo:userInfo];
Run Code Online (Sandbox Code Playgroud)
但是我的ViewController的委托方法从来没有被调用过:
- (void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Received userInfo Transferr");
NSLog(@"%@", userInfo);
[self.label setText:@"Received"];
});
}
Run Code Online (Sandbox Code Playgroud)
我从模拟器中同时运行Watch App和iOS,方法是按以下方案中的Run(运行):
谁能告诉我我做错了什么?