Post

Replies

Boosts

Views

Activity

Reply to Build succeeded but App crashes -Thread 1: must pass a class of kind UITableViewCell Ask Question Asked today Modifie
I got the same problem. But then when I return cell. When I return UITableViewCell() it won't even compile import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate {     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {         FirebaseApp.configure()         return true     }     // MARK: UISceneSession Lifecycle     func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {         return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)     }     func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {     } } SettingsView Controller struct SettingCelModel {     let title: String     let handler: (() -> Void) } /// View Controller to show user settings final class SettingsViewController: UIViewController {     private let tableView: UITableView = {         let tableView = UITableView(frame: .zero,                                     style: .grouped)         tableView.register(UITableViewCell.self,                            forCellReuseIdentifier: "cell")         return tableView     }()     private var data = [[SettingCelModel]]()     override func viewDidLoad() {         super.viewDidLoad()         configureModels()         view.backgroundColor = .systemBackground         view.addSubview(tableView)         tableView.delegate = self         tableView.dataSource = self     }     override func viewDidLayoutSubviews() {         super.viewDidLayoutSubviews()         tableView.frame = view.bounds     }     private func configureModels() {         let section = [             SettingCelModel(title: "Log Out") { [weak self] in                 self?.didTapLogOut()             }]         data.append(section)     }     private func didTapLogOut() {         let actionSheet = UIAlertController(title: "Log Out",                                             message: "Are you sure you want to log out",                                             preferredStyle: .actionSheet)         actionSheet.addAction(UIAlertAction(title: "Cancel",                                             style: .cancel,                                             handler: nil))         actionSheet.addAction(UIAlertAction(title: "Log Out", style: .destructive, handler: { _ in             AuthManager.shared.logOut(completion: { succes in                 DispatchQueue.main.async {                     if succes {                         // present log in                         let loginVC = LoginViewController()                         loginVC.modalPresentationStyle = .fullScreen                         self.present(loginVC, animated: true) {                             self.navigationController?.popToRootViewController(animated: false)                             self.tabBarController?.selectedIndex = 0                         }                     }                     else {                         // error occured                         fatalError("Could not log out user")                     }                 }             })         }))         actionSheet.popoverPresentationController?.sourceView = tableView         actionSheet.popoverPresentationController?.sourceRect = tableView.bounds         present(actionSheet, animated: true)     } } extension SettingsViewController: UITableViewDelegate, UITableViewDataSource {     func numberOfSections(in tableView: UITableView) -> Int {         return data.count     }     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {         return data[section].count     }     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {         let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)         cell.textLabel?.text = data[indexPath.section][indexPath.row].title         return cell     }     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {         tableView.deselectRow(at: indexPath, animated: true)         let model = data[indexPath.section][indexPath.row]         model.handler()     } }
Topic: UI Frameworks SubTopic: UIKit Tags:
Jun ’22