-1

私は Swift を初めて使用し、Objective C でのコーディングの経験がありません。私が直面している問題は、クラス オブジェクトからテーブル ビューのセルにデータを入力すると、すべてのセルが同じデータ (最後に最近アクセスした配列オブジェクト) を表示することです。 )。誰かがこれで私を助けてくれますか? ありがとう。

    class TableViewController: UITableViewController{

    var urgentCenters:Array<UrgentCenterDetails> = []

    override func viewDidLoad() {
        super.viewDidLoad()
        self.loadInfo()
        println("Number of entries: \(self.urgentCenters.count)")
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
        return 1;
    }

    override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        //println("Number of rows \(urgentCenters.count)")
        return self.urgentCenters.count
    }

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

        let cellId = "cell"
        var cell = tableView.dequeueReusableCellWithIdentifier(cellId) as? UITableViewCell

        if nil==cell {
            cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: cellId)
        }

        if let ip = indexPath{
            cell!.textLabel.text = urgentCenters[indexPath.row].title
        }
        return cell       
    }

    func loadInfo(){

        // Append data to urgentCenters data
        var center = UrgentCenterDetails()
        var title:String 
        title = "Penn's Landing"
        center.setCenterDetails(title)
        urgentCenters.append(center)

        title = "Liberty Bell"
        center.setCenterDetails(title)
        urgentCenters.append(center)
    }
 }
4

1 に答える 1

0

問題は、単一のUrgentCenterDetailsオブジェクトのみを作成し、それを配列に複数回追加していることです。オブジェクトは 1 つしかないため、そのプロパティを変更すると、配列のすべての要素に影響します (すべての要素で同じオブジェクトであるため)。

あなたが持っている必要があります-

func loadInfo(){

    // Append data to urgentCenters data

    var title:String 
    title = "Penn's Landing"
    center.setCenterDetails(title)
    urgentCenters.append(center)

    center = UrgentCenterDetails()
    title = "Liberty Bell"
    center.setCenterDetails(title)
    urgentCenters.append(center)
}
于 2014-08-20T23:37:02.727 に答える