簡體   English   中英

TableView.delegate 意外發現 nil - 在子視圖控制器上

[英]TableView.delegate unexpectedly found nil - on a child view controller

我有一個 tableView,它是通過 sideMenu 訪問的,其中這個特定的 viewController 是一個子 viewController。

出於某種原因,當我添加tableView.delegate = self ,還有tableView.dataSource

並注冊單元格。 我的應用程序崩潰了。 當我將此視圖控制器設置為初始視圖控制器時,表視圖會顯示出來,但是當我將其返回到我的主頁時,應用程序崩潰,並且不想加載。

我的 IBOutlets 連接正確。 我什至嘗試在故事板中連接數據源和委托。

我添加了兩種類型的代碼供大家查看,第一種是 IBOutlet,第二種是我嘗試了 addSubView(table) 但是,沒有表出現。

override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(table)
        table.delegate = self
        table.dataSource = self
        table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

這是我的錢包視圖控制器


//
//  WalletViewController.swift
//  handlwithcare
//
//  Created by Charles Morgan on 16/10/2021.
//


import UIKit
import RealmSwift




class WalletViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    let button = UIButton()
    
    @IBOutlet var table: UITableView!
    
    private var data = [AddCardItem]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        table.delegate = self
        table.dataSource = self
        table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        
        view.backgroundColor = UIColor(named: "RED")
        button.setTitle("Add New Card", for: .normal)
        view.addSubview(button)
        button.backgroundColor = UIColor(named: "yellow-2")
        button.setTitleColor(UIColor(named: "RED"), for: .normal)
        button.frame = CGRect(x: 50, y: 800, width: 350, height: 50)
        button.layer.cornerRadius = 15
        button.addTarget(self, action: #selector(didTapAddButton), for: .touchUpInside)
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.text = data[indexPath.row].item
        return cell
    }
       
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }
    
    @objc private func didTapAddButton() {
        let rootVC = addCardViewController()
        let navVC = UINavigationController(rootViewController: rootVC)
        navVC.modalPresentationStyle = .fullScreen
        present(navVC, animated: true)
        
        
    }
        
}
class AddCardItem: Object {
    @objc dynamic var item: String = ""
    @objc dynamic var date: Date = Date()
}


這是我第二次嘗試使用view.addSubView

import UIKit
import RealmSwift




class WalletViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    let button = UIButton()

    let table = UITableView()
    
    private var data = [AddCardItem]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(table)
        table.delegate = self
        table.dataSource = self
        table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        
        view.backgroundColor = UIColor(named: "RED")
        button.setTitle("Add New Card", for: .normal)
        view.addSubview(button)
        button.backgroundColor = UIColor(named: "yellow-2")
        button.setTitleColor(UIColor(named: "RED"), for: .normal)
        button.frame = CGRect(x: 50, y: 800, width: 350, height: 50)
        button.layer.cornerRadius = 15
        button.addTarget(self, action: #selector(didTapAddButton), for: .touchUpInside)
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.text = data[indexPath.row].item
        return cell
    }
       
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }
    
    @objc private func didTapAddButton() {
        let rootVC = addCardViewController()
        let navVC = UINavigationController(rootViewController: rootVC)
        navVC.modalPresentationStyle = .fullScreen
        present(navVC, animated: true)
        
        
    }
        
}
class AddCardItem: Object {
    @objc dynamic var item: String = ""
    @objc dynamic var date: Date = Date()
}


請更改注冊 CELL Tableview 上的代碼。

yourTableView .register(UINib.init(nibName: "ProductCVC", bundle: nil), forCellWithReuseIdentifier: "ProductCVC")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM