设置数据源和委托会使 UITableView 的应用程序崩溃
Setting data source and delegate crashes the app for UITableView
这里是新的,所以请多多包涵...我有一个简单的视图控制器,其中包含一个 UITableView
。我不确定是否应该将数据源和数据控制器连接到视图控制器。这样做会使应用程序崩溃,但如果我不这样做,当我 运行 应用程序时,我在 table 视图中看不到任何输出。这应该如何工作?
class ViewController: UIViewController {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
}
else {
return 2
}
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "One"
} else {
return "Two"
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! UITableViewCell
let cellImage: UIImage = UIImage (named: "generic.png")!
print("cell")
if indexPath.section == 0 {
cell.textLabel!.text = "Section 0, Row 0"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print("inside cell1")
}
else{
if indexPath.row == 0 {
cell.textLabel!.text = "Section 1, Row 0"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print("inside cell2")
}
else {
cell.textLabel!.text = "Section 1, Row 1"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print ("inside cell3")
}
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
}
您的视图控制器需要符合 UITableViewDataSource
和 UITableViewDelegate
才能使用这些方法。将您的 class 声明更改为:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
这里是新的,所以请多多包涵...我有一个简单的视图控制器,其中包含一个 UITableView
。我不确定是否应该将数据源和数据控制器连接到视图控制器。这样做会使应用程序崩溃,但如果我不这样做,当我 运行 应用程序时,我在 table 视图中看不到任何输出。这应该如何工作?
class ViewController: UIViewController {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
}
else {
return 2
}
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "One"
} else {
return "Two"
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! UITableViewCell
let cellImage: UIImage = UIImage (named: "generic.png")!
print("cell")
if indexPath.section == 0 {
cell.textLabel!.text = "Section 0, Row 0"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print("inside cell1")
}
else{
if indexPath.row == 0 {
cell.textLabel!.text = "Section 1, Row 0"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print("inside cell2")
}
else {
cell.textLabel!.text = "Section 1, Row 1"
cell.detailTextLabel!.text = "Detail goes here."
cell.imageView!.image = cellImage
print ("inside cell3")
}
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
}
您的视图控制器需要符合 UITableViewDataSource
和 UITableViewDelegate
才能使用这些方法。将您的 class 声明更改为:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate