2016-08-05 132 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相同?

相關問題