簡體   English   中英

Swift-TableViewCell使用自定義單元格返回空

[英]Swift - tableviewcell returns empty using custom cell

我是快速編程的新手,需要一些幫助來檢查tableviewcell中的錯誤。 我在stackoverflow上嘗試了很多很棒的建議。(確保您的插座已連接,將表視圖的委托和數據源設置為self)

這是我的ViewController:

import UIKit


class CharacterViewController: UIViewController, UITableViewDataSource, UITableViewDelegate , APIControllerProtocol {



@IBOutlet weak var  CharacterInfoView: UITableView!



var apiController:APIController!

var dataArray: [[String:Any]]?

var processcharacter= [CharacterListModel]()



override func viewDidLoad() {

    super.viewDidLoad()




    self.view.backgroundColor=UIColor.white

    self.CharacterInfoView.estimatedRowHeight = 44

    self.CharacterInfoView.rowHeight = UITableViewAutomaticDimension

    self.CharacterInfoView.dataSource = self

    self.CharacterInfoView.delegate = self



    apiController = APIController()

    apiController.delegate=self



    self.navigationItem.title =  "Character"

    self.view.showLoading()



    apiController.getCharacterData{ (statusCode, data, response, error) -> () in

     self.view.stopLoading()



     if(statusCode == nil)

     {

     self.view.showServiceNotAvailableMessage(self)

     }



     if !(error == nil)

     {

     self.view.showServiceNotAvailableMessage(self)

     }



     if statusCode == 200

     {

     do

     {



        self.processcharacter= CharacterListData.processData(data: data)

        self.CharacterInfoView.reloadData()



     }

     catch(_ as NSError)

     {



     }

     }

     else

     {



     return

     }

     }

}



func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1

}



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


    if self.dataArray == nil

     {

        return 0

     }

     else

     {

        return processcharacter.count

     }

}



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {



    let cell = tableView.dequeueReusableCell(withIdentifier:"Cell", for:indexPath) as! CharacterTableViewCell



    var processcharacters= processcharacter[indexPath.row]

    cell.location.text = processcharacters.location

    cell.name.text = processcharacters.name

    cell.characterID.text = processcharacters.characterID

    cell.time.text = processcharacters.lastlocatedtime



    if wecares.sos == true {

        processcharacters.imagebutton = UIImage(named: "sos_icon")!

    }

    else{

        processcharacters.imagebutton = UIImage(named: "null_button")!

    }



    cell.button.image = processcharacters.imagebutton



    return cell

}

func reachabilityChanged(_ status: Bool) {

 }

}

這是我的ViewController的子類:

import Foundation


class CharacterListDataHelper: NSObject {

static func processData(data: AnyObject?) -> [CharacterListModel]

{



    var modelList:[CharacterListModel] = [CharacterListModel]()

    let darr = try? JSONSerialization.jsonObject(with: data! as! Data, options: .mutableLeaves) as! [[String:Any]]

    var dataModel:CharacterListModel



    for obj in darr!

    {

        dataModel = CharacterListModel()

        dataModel.location = obj["playerLocation"] as! String

        dataModel.name = obj["playerName"] as! String

        dataModel.characterID= obj["playerID"] as! String     

        dataModel.lastlocatedtime = obj["lastUpdatedTime"] as! String

        }

        modelList.append(dataModel)

    }

    return modelList

}

}

這是我的模型:

import Foundation


struct  CharacterListModel {



var name: String?

var characterID: String?

var location: String?

var lastlocatedtime: String?

var imagebutton: UIImage?



var sos: Bool?

}

這是我的TableViewCell:

class CharacterTableViewCell: UITableViewCell {

@IBOutlet weak var name: UILabel!
@IBOutlet weak var characterID: UILabel!
@IBOutlet weak var location: UILabel!
@IBOutlet weak var lastlocatedtime: UILabel!
@IBOutlet weak var button: UIImageView!

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
}

提前致謝!

不要在viewDidLoad()方法中獲取數據。 獲取viewWillAppear並在獲取數據后重新加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM