当iPhone无法访问AppleWatch时,我们可以在手表中显示一些静态UI吗?
假设我在汽车座椅上忘记了我的iPhone,当我从汽车上移动时,是否可以在AppleWatch中显示一些您忘记iPhone的静态UI?
基本上,我的应用程序以页面格式布局,我希望它能够启动到三页的中间.没有办法设置上一个页面segue,所以我一直在尝试在代码中执行它.
我将主视图设置为第一个视图,并且我已经尝试了各种方法在应用程序启动后立即转到中间视图.
这是我尝试的两种方式:
if segueCheck == true {
self.pushControllerWithName("budget", context: self)
self.presentControllerWithName("budget", context: self)
segueCheck = false
}
Run Code Online (Sandbox Code Playgroud)
第一个呈现视图,但是作为完全独立的视图,第二个视图用中间视图替换第一个视图.
有谁知道如何启动到中间视图并允许用户向左和向右滑动?
谢谢.
我们如何在表中创建部分,因为没有委托.是否有任何其他方式来创建部分或我们必须使用两个表.
有没有办法在Watchkit中为WKInterfaceLabel添加边距/填充?使用UIEdgeInsets不起作用.
我正在尝试创建一个倒计时x分钟和y秒的计时器.我正在计算秒数并创建InterfaceTimer,如下所示:timer.setDate(NSDate(timeIntervalSinceNow:Double(secondsValue + 1)))timer.stop()
在那之后我一直停下来并一次又一次地开始它,但是价值突然下降,因为"时间(现在)不停止".例如:如果计时器显示:55,我启动它3秒并停止它,它显示:52,我等待10秒然后再次启动它,它从:42开始.
我无法保存当前在WKInterfaceTimer中的值,因此我可以从同一点重新开始.我试过的一切都行不通.有没有人使用计时器,它停止后保持相同的值?
我的项目有多个构建目标,因此我可以促进共享相同代码的"品牌"构建,但每个目标具有唯一的捆绑标识符和资产.我为我的一个应用目标创建了一个手表应用程序,它运行得很好.现在我正在尝试为我的其他目标使用相同的手表应用程序和扩展程序.我以为我可以轻松复制监视目标(监视和扩展),只需更改所有的bundle id引用以匹配其他目标,但它似乎是隐藏的引用.
我只是想为我所有不同的品牌目标使用一个手表应用程序.
旁注:手表应用程序也需要正确标记(资产文件夹).
有任何想法吗?谢谢.
解决方案更新
所以,我解决了它.当我复制我的监视目标(监视和扩展),并更改了捆绑ID,目标依赖关系,一切都使它与旧目标相同(但当然指向新目标),由于某种原因,新的监视目标没有' t指向正确的手表扩展目标.在任何地方都无法改变它.我试图重新复制目标,仍然有同样的问题.
所以我做的是打开project.pbxproj文件,搜索我的watch扩展(和bundle id)的任何引用并手动更新连接.我的手表目标依赖于错误的手表扩展,而新的手表扩展程序以某种方式指向旧手表扩展.我后来还发现我必须将构建指向正确的产品引用(appex参考),因为这也是错误的.
所以新的手表目标,指向错误的手表扩展,以及正确的手表扩展指向错误的appex(输出文件).所有这些我不得不在项目文件中手动更改.这听起来极端而且很难,但是一旦你记下了不同的UUID,它实际上并不那么困难.
我希望这可以帮助那些可能偶然发现同样奇怪问题的人.
我知道如何制作基本的手表并发症.
我想创建像本机电池一样(圆环)的复杂功能.
如何获取复杂的实时数据,可能是API调用,还是来自iPhone的数据?
我可以创建多个相同的并发症类型吗?
swift apple-watch watchkit apple-watch-complication swift3.1
错误:
我一直收到错误代码-1009"Internet连接似乎处于脱机状态." 在通过LTE连接到Internet时,在Apple Watch Series 3上的Apple Watch扩展中发出URLSession请求时出错.
重现步骤:
预期行为:
请求设法到达目的地.
观察到的行为:
请求立即失败,错误代码为-1009"Internet连接似乎处于脱机状态".
代码示例:
let config = URLSessionConfiguration.ephemeral
let sesh = URLSession(configuration: config)
let url = URL(string: "https://google.com")!
sesh.dataTask(with: request) { (_, _, error) in
print(error)
}.resume()
Run Code Online (Sandbox Code Playgroud) 我在 Apple Watch 上有一个自定义的复杂功能,我想每小时更新一次。它应该每小时 ping 一个 API 端点,如果上次检查后数据发生了变化,则应该更新复杂性。
这是我目前拥有的似乎只能在蓝色月亮中工作一次的东西。当它工作时,它确实会 ping 我的服务器并更新并发症。看来 WatchOS 并没有每小时调用一次我的预定任务。是否有我缺少的更好的标准做法?
@implementation ExtensionDelegate
- (void)applicationDidFinishLaunching {
// Perform any final initialization of your application.
[SessionManager sharedManager];
[self scheduleHourlyUpdate];
}
- (void) scheduleHourlyUpdate {
NSDate *nextHour = [[NSDate date] dateByAddingTimeInterval:(60 * 60)];
NSDateComponents *dateComponents = [[NSCalendar currentCalendar]
components: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:nextHour];
[[WKExtension sharedExtension] scheduleBackgroundRefreshWithPreferredDate:nextHour userInfo:nil scheduledCompletion:^(NSError * _Nullable error) {
// schedule another one in the next hour
if (error …Run Code Online (Sandbox Code Playgroud) 我曾经使用 WKInterfaceController 的名为“crownSequencer”的属性来监听表冠的旋转(请参见下面的代码)。我可以使用函数“crownDidRotate”获取表冠旋转的“rotationalValue”,如下所示。
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
override func awake(withContext context: Any?) {
// Configure interface objects here.
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
}
override func didAppear() {
super.didAppear()
crownSequencer.delegate = self
crownSequencer.focus()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
}
}
extension InterfaceController : WKCrownDelegate {
func crownDidRotate(_ …Run Code Online (Sandbox Code Playgroud)