Day#26 传送对话(1)

前言

前一天结束在点选某个搜寻到的使用者,今天接着做跟该使用者展开对话吧!

New Conversation

NewConversationViewController

我们将该点选的使用者指定给targetUserData,然後把这个资料推到已存在的对话纪录table当中,因此需要新增一个closure使用。

public var completion: (([String: String]) -> (Void))?

然後在昨天新增的地方,接续新对话的开启,我们加上程序

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)

    let targetUserData = results[indexPath.row]

    dismiss(animated: true, completion: {
        self?.completion?(targetUserData)
    })
}

ConversationViewController

didTapComposeButton

那由於刚刚新增了closure,我们要修改didTapComposeButton程序如下,也就是把closure实作加上去

@objc private func didTapComposeButton() {
    let vc = NewConversationViewController()
    vc.completion = { [weak self] result in
        print("\(result)")
        self?.createNewConversation(result: result)
    }
    let navVC = UINavigationController(rootViewController: vc)
    present(navVC, animated: true)
}

而其中的createNewConversation方法呢,也一起新增

private func createNewConversation(result: [String:String]) {
    let vc = ChatViewController()
    vc.title = ""
    vc.navigationItem.largeTitleDisplayMode = .never
    navigationController?.pushViewController(vc, animated: true)
}

其实跟先前mock过的内容一样,就先放过来!

结语

今天的内容很短...因为一直有bug,但我还在找@@
可能明天先跳回profile picture的部分~也不一定!

若上述内容有误或可以改进的部分,欢迎留言以及提出任何指教~
谢谢 ヘ| ´ω` |ノ


<<:  Day 26 - State Monad I

>>:  [Day26] String methods 字串操作方法(1)

[Java Day13] 4.1. 类别、物件与属性

教材网址 https://coding104.blogspot.com/2021/06/java-c...

Day 27 - 看起来很无聊又很好玩的游戏开发

Intro 这篇主要会讲解一些 SFML 中常用到的内容,效果,还有要怎麽用他们。 然後我会照 影片...

【Day15】AutoVC 实作 - Tensorflow 篇

资料前处理部分跟 Pytorch 篇一样,就不重复写了,这边只写 model 跟 Training ...

<Day30>动手做 Demo App(下)

使用 room 来建立Database abstract class AppDatabase: Ro...

[Day8] Docker 介绍

在前几篇文章我们学习了Django的基本专案建置, 相信大家在安装过程当中多少都会碰到一些问题,以及...