2016-07-27 70 views
3

我正在为我的学校设计一个应用程序,我试图在视图控制器中使用tableview制作一个简单的目录。我开始尝试制作对象,但后来转而使用更简单的数组,但没有任何运气。我不知道这是代码还是故事板的问题。下面是视图控制器代码:tableview使用数组不工作 - xcode 7.3

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 { 
    } 
    */ 
} 
+3

设置代表。 – WMios

+0

会在代码中还是在故事板中? – themc1r

+0

要么,取决于你。我将添加说明作为答案 – WMios

回答

0

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

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 
} 
+0

现在它显示错误EXC_BAD_INSTRUCTION行目录Cell.directoryLabel.text = names [indexPath.row] – themc1r

+0

嗯,我不知道任何关于你'DirectoryTableViewCell',但它应该工作,否则。 – WMios

+1

嗯,在你的'cellForRowAtIndexPath'函数中,定义你的单元格时,尝试在第一行中将'self.directoryTableView'更改为'tableView'。 –