1.注册 NIB 出现错误
// error:'registerNib(_:forCellReuseIdentifier:)' has been renamed to 'register' (_:forCellReuseIdentifier:)' 解决:根据提示将 registerNib 改为 register 即可 leftTextCell = self.contentTableView.register(UINib(nibName:"ChatLeftTextMessageTableViewCell", bundle: nil), forCellReuseIdentifier:"ChatLeftTextMessageTableViewCell") // 但是还报错 error:'register' produces 'Void' (aka '()'), not the expected contextual type 'xxx'
将其改为:
1 // 在 viewDidLoad 中改为: 2 let nib = UINib(nibName: "ChatLeftTextMessageTableViewCell", bundle: nil) // nibName指的是我们创建的Cell文件名 3 self.contentTableView?.register(nib, forCellReuseIdentifier: "ChatLeftTextMessageTableViewCell") 4 5 // 在 cellForRowAt indexPath: 加上这几行代码: 6 7 let cellIdentifier = "ChatLeftTextMessageTableViewCell" 8 9 leftTextCells = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? 10 ChatLeftTextMessageTableViewCell
2. swift 中的类方法在 OC 中调用
1 @objc 2 3 class GroupSettingTableViewController: UITableViewController 4 5 { 6 7 @objc class func isDisturb(originId: String ?) -> Bool? 8 9 { 10 11 } 12 13 } 14 15 // 在 OC 中调用时会报错,因为 OC 中没有可选这个知识点,还有 swift 方法中如果有枚举、结构体也不能在 OC 中使用,因为它们与 OC 中的不同
修正为:
1 @objc 2 3 class GroupSettingTableViewController: UITableViewController 4 5 { 6 @objc class func isDisturb(originId: String ) -> Bool 7 8 { 9 let gstvc = GroupSettingTableViewController() 10 gstvc.groupId = originId 11 gstvc.reloadGroupNoDisturb() 12 if let b = gstvc.isDisturb { 13 return b 14 } 15 return false 16 17 } 18 19 }