簡體   English   中英

UITableViewController在模擬器中顯示白色空白屏幕

[英]UITableViewController showing white blank screen in simulator

我正在嘗試制作一個非常簡單的iOS應用程序,該應用程序從一個UITableViewController開始,當您單擊每個單元格(孩子們應該以不同的方式學習)時,它將特定數據推送到UIViewController 我在單元格中添加了占位符信息,但是當我運行模擬器時,只會顯示一個空白屏幕。 我在下面附上圖片和代碼。

主故事板

仿真器

class TableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    @IBAction func backBtn(_ sender: AnyObject) {
        dismiss(animated: true, completion: nil);
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 0
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }

}

class ViewController: UIViewController, UITableViewDelegate {

    @IBOutlet var tableView: UITableView!

    var names = ["Manner 1", "Manner 2", "Manner 3", "Manner 4", "Manner 6", "Manner 7", "Manner 8"]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 8
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath as IndexPath) as! Manner2Cell

        cell.name.text = names[indexPath.row]

        return cell
    }

}

//Manner2Cell actually refers to the first cell. I know I know bad naming convention.

class Manner2Cell: UITableViewCell {
    @IBOutlet weak var name: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

看所有這些,看來我有一些重復的代碼。 我覺得這很容易解決,但我無法弄清楚!

您必須將ViewController設置為tableViewdataSource ,並采用UITableViewDataSource協議。

class ViewController: UITableViewDelegate, UITableViewDataSource, ... {
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self // Assigns ViewController as delegate for tableView 
        tableView.dataSource = self
    }

Interface Builder屏幕快照左上角的場景看起來像UITableViewController (大概是您稱為TableViewController的類)。

但是您的numberOfSectionsnumberOfRowsInSection都返回零。 這樣您將有一個空白的白色屏幕。 坦白說,看起來第一個場景的UITableViewController子類的代碼已經放在第二個場景的視圖控制器中。


您的第二個場景(快照的右上角)有點令人困惑,因為它看起來也像是UITableViewController ,但看起來根本不是一個表。 我不確定您要在那做什么。 它真的是一個重復出現的表嗎?還是只是作為您在第一個場景中選擇的單元格的細節? 如果僅是“詳細信息”屏幕,則應該是簡單的UIViewController而不是UITableViewController

暫無
暫無

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

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