Fab*_*ein 5 swift watchos swiftui
目前在 iOS 和 watchOS 上都有运行的解决方案。随着 SwiftUI 即将到来的好消息,可能性正在扩大,同时我们对它的疑虑也随之增加。我的问题是:我有很多:
import WatchKit
import Foundation
class LoginInterfaceController : WKInterfaceController {
@IBOutlet weak var label: WKInterfaceLabel!
var timer: Timer!
var connection = true
...
Run Code Online (Sandbox Code Playgroud)
我想将这些观点转变为:
import SwiftUI
@available(watchOSApplicationExtension 6.0, *)
struct FirstView: View {
var body: some View {
LoginView(email: "", pass: "")
}
}
@available(watchOSApplicationExtension 6.0, *)
struct LoginView : View {
@State var email: String
@State var pass: String
var body: some View {
VStack(alignment: .leading) {
...
Run Code Online (Sandbox Code Playgroud)
如何调用并呈现新的View?今天我打电话给这样的人:presentController(withName: "LoginPlease", context: text)找不到旧视图的东西呈现新视图......
要呈现纯 SwiftUI 视图,请使用WKHostingController.
有关此内容的更多信息,请参阅这个精彩的 WWDC 2019 视频:watchOS 上的 SwiftUI。
例子:
class HostingController: WKHostingController<MyView> {
override var body: MyView {
MyView()
}
}
Run Code Online (Sandbox Code Playgroud)
要重用现有的接口对象,请创建一个符合WKInterfaceObjectRepresentable.
例子:
struct WatchMapView: WKInterfaceObjectRepresentable {
var landmark: Landmark
func makeWKInterfaceObject(context: WKInterfaceObjectRepresentableContext<WatchMapView>) -> WKInterfaceMap {
// Return the interface object that the view displays.
return WKInterfaceMap()
}
func updateWKInterfaceObject(_ map: WKInterfaceMap, context: WKInterfaceObjectRepresentableContext<WatchMapView>) {
// Update the interface object.
let span = MKCoordinateSpan(latitudeDelta: 0.02,
longitudeDelta: 0.02)
let region = MKCoordinateRegion(
center: landmark.locationCoordinate,
span: span)
map.setRegion(region)
}
}
Run Code Online (Sandbox Code Playgroud)
当涉及到重用预先存在的视图时,集成 SwiftUI是您正在寻找的 WWDC 视频。
这也是一个很棒的资源:Building watchOS App Interfaces with SwiftUI。
| 归档时间: |
|
| 查看次数: |
4390 次 |
| 最近记录: |