使用数组的表格视图不起作用 - xcode 7.3

Posted

技术标签:

【中文标题】使用数组的表格视图不起作用 - xcode 7.3【英文标题】:tableview using array not working - xcode 7.3 【发布时间】:2016-07-27 15:45:57 【问题描述】:

我正在为我的学校设计一个应用程序,并且我正在尝试使用视图控制器中的 tableview 创建一个简单的目录。我开始尝试制作对象,但后来切换到更简单的数组,仍然没有任何运气。我不知道这是代码问题还是故事板问题。这是视图控制器的代码:

import UIKit

class DirectoryViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet weak var backButton2: UIButton!

    @IBOutlet weak var directoryTableView: UITableView!

    // @IBOutlet weak var nameLabel: NSLayoutConstraint!

    // let searchController = UISearchController(searchResultsController: nil)

    // var directoryObjects: NSMutableArray! = NSMutableArray()

    var names = ["Teacher 1", "Teacher 2", "Teacher 3"]

    override func viewDidLoad() 
        super.viewDidLoad()

        /*  
        self.directoryObjects.addObject("Teacher 1")
        self.directoryObjects.addObject("Teacher 2")
        self.directoryObjects.addObject("Teacher 3")

        self.directoryTableView.reloadData()
        */
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
    


    // Mark - tableview

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    
        return 3
    

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    
        let directoryCell = self.directoryTableView.dequeueReusableCellWithIdentifier("directoryCell", forIndexPath: indexPath) as! DirectoryTableViewCell

        // directoryCell.directoryLabel.text = self.directoryObjects.objectAtIndex(indexPath.row) as? String

        directoryCell.directoryLabel.text = names[indexPath.row]

        return directoryCell
    


    @IBAction func backButton2Tapped(sender: AnyObject) 
        self.dismissViewControllerAnimated(true, completion: nil)
    


这是 DirectoryTableViewCell 的代码:

import UIKit

class DirectoryTableViewCell: UITableViewCell 

    @IBOutlet weak var directoryLabel: 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
    
/*
    func directoryTableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    
    */

【问题讨论】:

设置代表。 是在代码中还是在故事板中? 要么,这取决于你。我将添加说明作为答案 或者在情节提要中,您可以从tableView 拖动到您的DirectoryViewController(视图顶部带有白色方块的黄色圆圈或文档大纲中)并选择dataSourcedelegate。甚至在您选择了tableView 后,从页面右侧连接检查器(实用程序面板)中的插座标题下的dataSourcedelegate 选项中拖动到视图控制器。 这里已经回答了。 ***.com/a/25545185/3947151 【参考方案1】:

您必须设置代表。最简单的方法是在代码中。

viewDidLoad 中添加:

directoryTableView.delegate = self
directoryTableView.dataSource = self

这将允许调用那些tableView 函数。

我还建议更改:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    return 3

到:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    return names.count

【讨论】:

现在它显示错误 EXC_BAD_INSTRUCTION 到行 directoryCell.directoryLabel.text = names[indexPath.row] 好吧,我对你一无所知DirectoryTableViewCell,但它应该可以正常工作。 嗯,在您的cellForRowAtIndexPath 函数中,定义您的单元格时,请尝试在第一行将self.directoryTableView 更改为tableView 您是否还创建了具有指定标识符的原型单元? 是的,在故事板中我创建了一个原型单元。它有一个链接到 DirectoryTableViewCell 的标签,并且单元格标识符是 directoryCell。

以上是关于使用数组的表格视图不起作用 - xcode 7.3的主要内容,如果未能解决你的问题,请参考以下文章

启用双长度伪语言在 Xcode 7.3 中不起作用

UITableViewAutomaticDimension 在 Xcode 6.3 中不起作用

用数组的内容填充表格视图不起作用

表格视图的辅助功能不起作用

搜索自定义表格视图单元格不起作用并返回 nil

在 Xcode 12 上运行应用程序时按钮不起作用 [重复]