与ViewController一起使用时的swiftUI导航栏标题设置

时间:2020-06-19 10:59:01

标签: swift swiftui viewcontroller

cells page

ChatView

这是我的单元格页面代码

    var body : some View{
        NavigationView {
            List(getPairsUser()){i in

                NavigationLink(destination: ChatView(friend:i)){
                    cellView(user : i)
                }
                .navigationBarTitle(Text("Friends List"),displayMode: .inline)
            }
                .navigationBarHidden(true)


        }.frame(minWidth: UIScreen.main.bounds.width, idealWidth: UIScreen.main.bounds.width, maxWidth: UIScreen.main.bounds.width,  maxHeight: .infinity)
            .clipShape(Rounded())

    }
NavigationLink目标中的

是ChatView()

和ChatView的代码在这里

struct ChatView: UIViewControllerRepresentable {

    @EnvironmentObject var obser:Observer


    var db = Firestore.firestore()
    var friend:User!
    var messageRef:CollectionReference!
    var pairRef:CollectionReference!

    init(friend:User){
        self.friend = friend

    }

    func updateUIViewController(_ uiViewController: ChatViewController, context: Context) {
        if(uiViewController.left){
            if(!self.obser.messageListenerFlag[friend.pairUid]!){
                self.obser.messageListenerFlag[friend.pairUid] = true
                if( uiViewController.lastMessageDate != nil){
                    self.obser.pairLastMessages[friend.pairUid] = uiViewController.lastMessage
                    self.obser.pairLastMessagesDate[friend.pairUid] = uiViewController.lastMessageDate
                }
            }

        }

    }
    func makeUIViewController(context: Context) -> ChatViewController {
        let chatViewController = ChatViewController()
        chatViewController.navigationItem.title = self.friend.name

        self.navigationBarTitle(Text(self.friend.name))


        chatViewController.title = self.friend.name
        chatViewController.senderId = self.obser.__THIS__.Uid
        chatViewController.senderDisplayName = self.obser.__THIS__.Name
        chatViewController.friend = self.friend
        chatViewController.messageRef = self.db.collection("pairs").document(self.friend.pairUid).collection("messages")
        chatViewController.pairRef = self.db.collection("pairs").document(self.friend.pairUid).collection("typingIndicator")
        chatViewController.__THIS__ = self.obser.__THIS__

        let _url = URL(string: self.friend.image)!
        if let data = try? Data(contentsOf: _url) {
            chatViewController.friendImage = UIImage(data: data)
        }

        self.obser.messageListenerFlag[friend.pairUid] = false




        self.obser.unreadMessageCount[friend.pairUid]? = 0


        return chatViewController
    }

    typealias UIViewControllerType = ChatViewController

}

我想做的就是进入ChatView

我想在橙色方块(图片中)中添加一些文本(朋友的名字)

我已经尝试在单元格页面上添加.navigationTitle,但是它不起作用

我也尝试修改viewcontroller的标题,但是它也不起作用

我该怎么办?

1 个答案:

答案 0 :(得分:0)

在回答您的问题之前,很抱歉没有做任何测试。这只是基于我的假设。

设置chatViewController.navigationItem.title = self.friend.name而不是SwiftUI视图的调用navigationBarTitle

我认为推送视图不是普通的SwiftUI,而是UIKit视图,因此您应该以UIKit方式处理它。