swift - 如果声明在公共(public)职能中不起作用? [Swift 3.0 - Xcode]

标签 swift xcode function if-statement public

我正在尝试通过施加条件来整理我的数据,以便我可以将其呈现在表格中。我的条件是 AllData.count 必须等于 4。即使它等于 4,我的数据也不会附加到我的新数组中? 谁能告诉我出了什么问题吗?

var AllData = [String]()
var DataTable = [String]()

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
    if AllData.count == 4 {
        DataTable.append(contentsOf: AllData)
        print("appended")
    }

    for i in stride(from: 0, to: DataTable.count - 1, by: 4) {
        cell.textLabel?.text = DataTable[i]
    }

    return cell
}

override func viewDidLoad(){
    print("AllData count ------->",AllData.count)
    print("Datatable count---------->",DataTable.count)
    super.viewDidLoad()
}

输出: 所有数据计数 --------> 4 数据表计数----------> 0

最佳答案

首先,如果您在 tableview 上看不到任何内容,请检查 viewDidLoad 中是否正确设置委托(delegate)和数据源。像这样

override func viewDidLoad(){
    self.tableView.delegate = self
    self.tableView.dataSource = self
}

viewDidLoadcellForRowAt 之前完成。因此日志 AllData count ----------> 4 Datatable count------------> 0 似乎是正确的。

但是,您的 cellForRowAt 出现了问题。您的意思是,如果 AllData 中有四个元素为 true,则将 AllData 中的所有内容附加到 DataTable 中。然后循环 DataTable 并将值分配给您的 UILabel ?这样,您的标签将仅包含 DataTable 最后一个元素的数据。此外,每次准备好单元格时都会调用cellForRow。因此,对于第二个单元格,DataTable 将在 AllData 中具有相同的数据两次,并且通过循环,您仍然将最后一个数据分配给标签。因此,无需更多代码,您将显示一个表格 View ,该 View 将在每个单元格上添加标签,显示 AllData 数组中的最后一个元素

关于swift - 如果声明在公共(public)职能中不起作用? [Swift 3.0 - Xcode],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814991/

相关文章:

json - 元组类型 '(key: String, value: AnyObject)' 的值没有成员 'subscript'

ios - Firebase 发送位置数据时如何更新 MapView?

ios - 在 UITableView 上调用scrollToRow 不适用于 AccessoryView

ios - 利用时间快速改变主题

objective-c - XCode 不会将我的 iPhone 设置为事件方案

javascript - 检查 JavaScript 函数是否在不执行的情况下返回?

c++ - 在此 C++ 代码中以何种方式调用函数?

ios - 即使出现警报也隐藏状态栏

ios - 当用户使用调试工具跟踪代码时,如何使IOS Framework进行封装?

javascript - 定义 JQuery 函数