我正在使用UITableView,因此使用UITableViewDataSource。我的dataSource是
theTableView.dataSource = self
但是我想让UITableView从名为'phone'的变量中获取数据,这是一个String。当前错误为“String与UITableViewDataSource不同”。
如何让UITableView从字符串变量中获取数据?
谢谢 - 希望这最终也会对其他人有用。
(对于那些寻找相同解决方案的其他人来说无关紧要:var'phone'是通过Contacts框架从用户的联系人中提取的电话号码。我正在尝试让UITableView接收新的电话号码每次他们被选中)。
答案 0 :(得分:0)
好吧,您需要将tableView的数据源设置为符合UITableViewDataSource协议的类。然后定义tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath)函数。
示例:
import Foundation
class Example : UITableView, UITableViewDataSource, UITableViewDelegate
{
var dataSource = [ "hello", "how", "are", "you" ]
// MARK: Lifecycle
override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: style)
}
override init(frame: CGRect) {
super.init(frame: frame)
self.dataSource = self
self.delegate = self
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
// MARK: Data Source / Delegates
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dataSource.count
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellId")
cell.textLabel?.text = self.dataSource[indexPath.row]
return cell
}
}