使用数组的表格视图不起作用 - 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
(视图顶部带有白色方块的黄色圆圈或文档大纲中)并选择dataSource
和 delegate
。甚至在您选择了tableView
后,从页面右侧连接检查器(实用程序面板)中的插座标题下的dataSource
和delegate
选项中拖动到视图控制器。
这里已经回答了。 ***.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的主要内容,如果未能解决你的问题,请参考以下文章