2016-08-05 155 views
0

我是新来的Swift。 我试图做一个定制寻找的TableView和故事板自定义UITableViewCell - 不显示

enter image description here

添加一个原型细胞我做了,我在检查增加了对细胞 enter image description here

这是代码自定义类:

class SearchTableViewCell: UITableViewCell { 

    @IBOutlet var routeDescriptionLbl: UILabel! 
    @IBOutlet var ivRoute: UIImageView! 
    @IBOutlet var distanceLbl: UILabel! 
    @IBOutlet var routeNumberLbl: UILabel! 


    override func awakeFromNib() { 
    //still empty yet 
     super.awakeFromNib() 

    } 

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

     // Configure the view for the selected state 
    } 
} 

现在我做了一个标识符: enter image description here

而这里的视图控制器整个视图(部分):

class SearchViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{ 

    var transportData : [RouteModel] = [] 

    override func viewDidLoad() { 
       super.viewDidLoad() 
     fillMockup() 
     self.lvMain.reloadData() //in case it's needed after mockup is filled 

    } 

    override func didReceiveMemoryWarning() { 

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

    override func viewDidAppear(animated: Bool) { 

     NSLog("viewDidAppear") 
    } 

    func fillMockup(){ 
//just some mockup data to test if it's working 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "44", description: "Ярославль - Сан Тропе",dist: "200 m")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_TRAM,routeNumber: "11", description: "Ярославль - Сан Тропе",dist: "400 m")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_R_BUS,routeNumber: "1", description: "Ярославль Главный - Жопа Мира",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_TROLLEY,routeNumber: "24", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "43", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "43а", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "85б", description: "Ярославль - Брагино",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "38", description: "Ярославль - Брагино",dist: "2.4 км")) 
    } 

    public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
     NSLog("transportData.count = \(transportData.count)") 
     return transportData.count 
    } 

    public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") as? SearchTableViewCell 
     if let cell = cell { 
      cell.routeNumberLbl.text = transportData[indexPath.row].routeNumber 
      cell.routeDescriptionLbl.text = transportData[indexPath.row].description 
      cell.distanceLbl.text = transportData[indexPath.row].dist 

      return cell 
     } 

     return UITableViewCell() 

    } 

    func tableView(tableView: UITableView, 
        didSelectRowAtIndexPath indexPath: NSIndexPath){ 
     NSLog("You selected cell #\(indexPath.row)!") 
     let position = indexPath.row; 
     tableView.deselectRowAtIndexPath(indexPath, animated: false) 
    } 
} 

现在,而不是从表视图的任何记录被调用。当然,TableView没有显示

什么问题?

回答

0

不喜欢

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell: SearchTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") as! SearchTableViewCell 

    cell.routeNumberLbl.text = transportData[indexPath.row].routeNumber 
     cell.routeDescriptionLbl.text = transportData[indexPath.row].description 
     cell.distanceLbl.text = transportData[indexPath.row].dist 

    return cell 
} 

更新答案

override func viewDidLoad() { 
       super.viewDidLoad() 
      self.lvMain.delegate = self // invoke data source and delegate on current class 
     self.lvMain.dataSource = self 
     fillMockup() 



    } 

    func fillMockup(){ 
//just some mockup data to test if it's working 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "44", description: "Ярославль - Сан Тропе",dist: "200 m")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_TRAM,routeNumber: "11", description: "Ярославль - Сан Тропе",dist: "400 m")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_R_BUS,routeNumber: "1", description: "Ярославль Главный - Жопа Мира",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_TROLLEY,routeNumber: "24", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "43", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "43а", description: "Ярославль - Малые Гребеня",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "85б", description: "Ярославль - Брагино",dist: "1.4 км")) 
     transportData.append(RouteModel(type: RouteModel.TYPE_BUS,routeNumber: "38", description: "Ярославль - Брагино",dist: "2.4 км")) 

     self.lvMain.reloadData() //reload the table when does loaded perfectly 
    } 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell: SearchTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") as! SearchTableViewCell 

    cell.routeNumberLbl.text = transportData[indexPath.row].routeNumber 
     cell.routeDescriptionLbl.text = transportData[indexPath.row].description 
     cell.distanceLbl.text = transportData[indexPath.row].dist 

    return cell 
} 

额外例如见this

+0

检查更新的答案 –

0

这是由于,因为它不是你的始终是创建一个新的实例发生进来如果部分。所以,检查你的电池是零,然后创建你的电池的情况下这样的..

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 

    var cell: MyCell! = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") 

    if cell == nil { 
       tableView.registerNib(UINib(nibName: "MyCell", bundle: nil), forCellReuseIdentifier: "reuseIdentifier") 
       cell =tableView.dequeueReusableCellWithIdentifier(identifier) as? MyCell 
      } 
    return cell 
    } 
} 

这里了myCell是自定义单元格。

1

添加两线内viewDidLoad()功能

self.yourtableviewname.delegate = self 
self.yourtableviewname.dataSource = self 
0

您可以检查您是否忘了做从下面两个步骤什么

1)交叉检查是否已连接数据源,代表和IBOutlet中对于tableview?

2)检查Storyboard中设置的标识符是否与reuseIdentifier相同?

相关问题