在TableViewController中显示List,数组中只有1个项目

时间:2015-02-14 14:29:54

标签: arrays xcode uitableview swift ios8

学习编写Swift代码,我尝试将一个数组添加到TableView控制器中,这样数组中的每个项目都是表中自己的一行,一切都很顺利,但是如果我在数组中只有一个项目,它就不会不显示。

var myArray = [[""]]
var count = myArray.count
var myArray2 = [""]

for index in 0...count-1 {
    myArray2.append(myArray[index][0])
}

在稍后的函数中,我将myArray2添加到列表中,但正如我所说,如果列表中只有1个项目,则它不起作用。认为这是因为我正在做0 ... count-1,所以0 ... 0,但是无法解决另一种做法。

由于

完整代码:

import UIKit

struct MyVariables {
static var myArray = [[""]]
}

class HistoryViewController: UIViewController, UITableViewDelegate {
var myArray2 = [""]

@IBOutlet var tableView: UITableView!

override func viewDidLoad() {
println(MyVariables.myArray)
super.viewDidLoad()

var firstItem = MyVariables.myArray[0][0]
if firstItem == "" {
    MyVariables.myArray.removeAtIndex(0)
}

println(MyVariables.myArray.count)

var count = MyVariables.myArray.count
println(count)
var countIsNotZero = false
println(countIsNotZero)

myArray2.removeAll(keepCapacity: false)

if count != 0 {
    countIsNotZero = true
}
println(countIsNotZero)

if count != 0 {
    for index in 0...count-1 {
        myArray2.append(MyVariables.myArray[index][0])
        println(index)
    }
}
self.tableView.reloadData()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
println(myArray2.count)
return myArray2.count;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

println(myArray2.count)
if myArray2.count > 1{
    cell.textLabel?.text = myArray2[indexPath.row]
    println(myArray2.count)
} else {
    cell.textLabel?.text = ""
}
return cell
} 
}

1 个答案:

答案 0 :(得分:0)

您的表格没有显示单个值,因为当数组没有至少两个项目时,您使用空字符串填充标签的文本。如果删除该检查,您的表将使用一个项目:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

    println(myArray2.count)
    cell.textLabel?.text = myArray2[indexPath.row]
    return cell
}