我在UITableViewController
中创建了一个包含两个属性的自定义类:
import UIKit
class FirstTableViewController: UITableViewController {
class Continent {
var name: String = "Country name"
var continentCountries: NSArray = ["countries of selected continent"]
}
现在我创建了几个对象并将它们放在一个数组中:
func setup() {
var asia = Continent()
asia.name = "Asia"
asia.continentCountries = ["Afghanistan","Armenia","Azerbaijan","Bahrain"] //etc..
var africa = Continent()
africa.name = "Africa"
africa.continentCountries = ["Egypt","Sierra Leone","Sudan","South Africa"] //etc..
var northAmerica - Continent()
northAmerica.name = "North America"
northAmerica.continentCountries = ["Canada","United States of America","Mexico"]
let theWorld = [asia,africa,northAmerica]
}
注意我必须用“func setup()
”方法声明我新创建的对象和我的数组,因为它们不被识别为“Continent”对象而是“FirstTableViewController”对象
现在我的目标是填充下面的表视图,每个对象的第一个属性是“name”,我使用了以下代码:
let aContinent = theWorld[indexPath.row] as! Continent
cell.textLabel.text = aContinent.name
现在的问题是,setup()方法以外的任何内容,控制器都无法识别,并标记为“未声明”,因此我无法将代码添加到{{1}的任何协议代理中存在:
TableViewController
应该纠正什么?我如何允许我新创建的类及其对象与初始override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3 //this is just a temporary Int
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
return cell
类一起执行,以便我可以填充此表视图?
答案 0 :(得分:0)
声明这样的属性,以便您可以在委托方法
中使用它class FirstTableViewController: UITableViewController {
class Continent {
var name: String = "Country name"
var continentCountries: NSArray = ["countries of selected continent"]
}
let theWorld:[Continent] = {
var asia = Continent()
asia.name = "Asia"
asia.continentCountries = ["Afghanistan","Armenia","Azerbaijan","Bahrain"] //etc..
var africa = Continent()
africa.name = "Africa"
africa.continentCountries = ["Egypt","Sierra Leone","Sudan","South Africa"] //etc..
var northAmerica = Continent()
northAmerica.name = "North America"
northAmerica.continentCountries = ["Canada","United States of America","Mexico"]
return [asia,africa,northAmerica]
}()
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return theWorld.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = theWorld[indexPath.row].name
return cell
}
}
截图
答案 1 :(得分:0)
欢迎来到SO。
你好像很困惑。您不希望theWorld变量成为设置函数的局部变量。您希望它是FirstTableViewController类的实例var,并且您希望setup是该类的实例方法。 (定义在班级的大括号内。)答案 2 :(得分:0)
试试这个:
DataBase