SwiftUI:从 NavigationView 打开 CNContactViewController?
SwiftUI: Open CNContactViewController from NavigationView?
我正在尝试打开 CNContactViewController
以从 NavigationView
创建新联系人。到目前为止,这是我尝试过但失败了的方法:
- 添加了导航栏项并设置了目的地
.navigationBarItems(trailing:
NavigationLink(destination: self.addContact()) {
Text("Add")
}
)
addContact
函数returns新视图
func addContact() -> CNContactViewController {
let con = CNContact()
let vc = CNContactViewController(forNewContact: con)
return vc
}
不幸的是,这似乎不起作用。我是 iOS 和 SwiftUI 的新手,我不确定这是否是这样做的方式,任何帮助将不胜感激!
您必须将 CNContactViewController
嵌入 UIViewControllerRepresentable
。
Here's the Apple documentation.
还有,here's a non-Apple article关于它。
因为您是 iOS 的新手,请注意 SwiftUI 远未完成且文档齐全。而且 SwiftUI 仅在最新的 iOS 13 上运行,因此并非所有潜在的应用程序用户可能(已经)安装了该 iOS 版本。
完整的解决方案;
.navigationBarItems(trailing:
NavigationLink(destination: self.addContact()) {
Text("Add")
}
)
函数;
func addContact() -> MyCNContactViewController {
let vc = MyCNContactViewController()
return vc
}
用于包装 `CNContactViewController`` 的可代表结构
struct MyCNContactViewController: UIViewControllerRepresentable {
typealias UIViewControllerType = CNContactViewController
func makeUIViewController(context: Context) -> CNContactViewController {
let con = CNContact()
let vc = CNContactViewController(forNewContact: con)
vc.allowsActions = true
return vc
}
func updateUIViewController(_ uiViewController: CNContactViewController, context: Context) {
}
}
我正在尝试打开 CNContactViewController
以从 NavigationView
创建新联系人。到目前为止,这是我尝试过但失败了的方法:
- 添加了导航栏项并设置了目的地
.navigationBarItems(trailing:
NavigationLink(destination: self.addContact()) {
Text("Add")
}
)
addContact
函数returns新视图
func addContact() -> CNContactViewController {
let con = CNContact()
let vc = CNContactViewController(forNewContact: con)
return vc
}
不幸的是,这似乎不起作用。我是 iOS 和 SwiftUI 的新手,我不确定这是否是这样做的方式,任何帮助将不胜感激!
您必须将 CNContactViewController
嵌入 UIViewControllerRepresentable
。
Here's the Apple documentation.
还有,here's a non-Apple article关于它。
因为您是 iOS 的新手,请注意 SwiftUI 远未完成且文档齐全。而且 SwiftUI 仅在最新的 iOS 13 上运行,因此并非所有潜在的应用程序用户可能(已经)安装了该 iOS 版本。
完整的解决方案;
.navigationBarItems(trailing:
NavigationLink(destination: self.addContact()) {
Text("Add")
}
)
函数;
func addContact() -> MyCNContactViewController {
let vc = MyCNContactViewController()
return vc
}
用于包装 `CNContactViewController`` 的可代表结构
struct MyCNContactViewController: UIViewControllerRepresentable {
typealias UIViewControllerType = CNContactViewController
func makeUIViewController(context: Context) -> CNContactViewController {
let con = CNContact()
let vc = CNContactViewController(forNewContact: con)
vc.allowsActions = true
return vc
}
func updateUIViewController(_ uiViewController: CNContactViewController, context: Context) {
}
}