2

我正在尝试打开CNContactViewController以从NavigationView. 到目前为止,这是我尝试过但失败的方法:

  1. 添加导航栏项目并设置目的地
        .navigationBarItems(trailing:
            NavigationLink(destination: self.addContact()) {
                Text("Add")
            }
        )
  1. addContact函数返回新视图
    func addContact() -> CNContactViewController {
        let con = CNContact()
        let vc = CNContactViewController(forNewContact: con)
        return vc
    }

不幸的是,这似乎不起作用。我对 iOS 和 SwiftUI 很陌生,我不确定这是否是这样做的方法,任何帮助将不胜感激!

4

2 回答 2

1

你必须嵌入CNContactViewController一个UIViewControllerRepresentable.

这是 Apple 文档

而且,这是一篇关于它的非 Apple 文章

由于您是 iOS 新手,请注意 SwiftUI 远未完成并没有完整记录。而且 SwiftUI 仅在最新的 iOS 13 上运行,因此并非所有潜在的应用程序用户都可能(已经)安装了该 iOS 版本。

于 2019-10-13T17:25:27.480 回答
0

完整的解决方案;

 .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) {
        
    }
}
于 2021-09-06T19:08:19.270 回答