У меня есть приложение чата, и я хочу перейти от моего ChatController к newMessageVC с помощью модального перехода.В newMessageVC все мои контакты показаны в виде таблицы.При нажатии на контакт newMessageVC должен быть отклонен, а выбранный контакт должен быть отправлен в ChatController.В этот момент ChatController должен выполнить переход к ChatVC, чтобы показать новый чат с пользователем, на которого нажали.Как я могу это сделать?
Я попробовал следующий код:
newMessageVC закрывается и вызывается функция showChatVC (она показывает оператор печати), но затем возникает ошибка, хотя sege делаетсуществовать.Существует переход от ChatController к ChatVC с именем "showChatVC"
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<WeAreFriends.ChatController: 0x7fd760e22e80>) has no segue with identifier 'showChatVC''
class ChatController : UITableViewController {
//MARK: - Outlets
@IBOutlet weak var MessageTableView: UITableView!
//MARK: - Properties
var messages = [MessageModel]()
//Mark: - Init View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
configureNavigationBar()
}
//MARK: - Navigation Bar
func configureNavigationBar() {
navigationItem.title = "Messages"
navigationController?.navigationBar.barTintColor = Defaults.hexStringToUIColor(hex: "#006D79")
let textAttributes = [NSAttributedString.Key.foregroundColor: Defaults.hexStringToUIColor(hex: "#FFAA01")]
navigationController?.navigationBar.titleTextAttributes = textAttributes
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(handleNewMessage))
}
@objc func handleNewMessage(){
performSegue(withIdentifier: "showNewMessage", sender: self)
}
//MARK: - Show ChatVC
func showChatVC(forUser user: UserModel){
print("Shooow, jihaaaaa")
let messageController = MessageController()
messageController.user = user
performSegue(withIdentifier: "showChatVC", sender: self)
}
//MARK: - Prepare for segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showNewMessage" {
let destinationVC = segue.destination as! NewMessageController
destinationVC.chatController = ChatController()
}
}
//MARK: - Table Config
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MessagesTableViewCell", for: indexPath) as! MessagesTableViewCell
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("did select row")
}
}
newMessageVC:
class NewMessageController: UITableViewController {
//MARK: - Outlets
@IBOutlet var NewMessageTableView: UITableView!
//MARK: - Var/let
var users = [UserModel]()
var chatController : ChatController?
//Mark: - Init View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
configureNavigationBar()
fetchUser()
}
//MARK: - User laden
func fetchUser(){
UserApi.shared.observeUsersButCurrentUser { (user) in
self.users.append(user)
self.NewMessageTableView.reloadData()
}
}
//MARK: - Navigation Bar
func configureNavigationBar() {
navigationItem.title = "New Message"
navigationController?.navigationBar.barTintColor = Defaults.hexStringToUIColor(hex: "#006D79")
let textAttributes = [NSAttributedString.Key.foregroundColor: Defaults.hexStringToUIColor(hex: "#FFAA01")]
navigationController?.navigationBar.titleTextAttributes = textAttributes
}
//MARK: - Tableview Config
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "NewMessageTableViewCell", for: indexPath) as! NewMessageTableViewCell
cell.user = users[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.dismiss(animated: true) {
let user = self.users[indexPath.row]
self.chatController!.showChatController(forUser: user)
}
}
}
Что я делаю не так?