Ios 试图返回UITableView中数组的每个索引
我正在尝试在我的应用程序中使用MVC模型。这是我第一次使用它,因为我只是在学习iOS编程。有几件事你需要知道才能帮助我。首先:我有一个名为Home.swift的模型,在这个模型中我有一个数组和一个函数。“Home.swift”: 最后是我的视图控制器“HomePageViewController.swift”:Ios 试图返回UITableView中数组的每个索引,ios,swift,Ios,Swift,我正在尝试在我的应用程序中使用MVC模型。这是我第一次使用它,因为我只是在学习iOS编程。有几件事你需要知道才能帮助我。首先:我有一个名为Home.swift的模型,在这个模型中我有一个数组和一个函数。“Home.swift”: 最后是我的视图控制器“HomePageViewController.swift”: 我想做的是能够获取Home.swift(我的模型)中我的数组中的每个索引,并将它们显示在各自的单元格中。我相信我需要创建一个家庭对象数组,但我不知道如何去做这件事。很抱歉这段文字和糟糕的
我想做的是能够获取Home.swift(我的模型)中我的数组中的每个索引,并将它们显示在各自的单元格中。我相信我需要创建一个家庭对象数组,但我不知道如何去做这件事。很抱歉这段文字和糟糕的格式(我一生都无法修复第一段代码),但我真的迷路了,在google和stackoverflow上四处寻找了一段时间,试图解决我的问题,但运气不好。提前谢谢 您正在对
contents
数组中的值进行硬编码。因此需要使用该数组中的值。在这种情况下,不需要创建多个Home
对象。你想要的是:
Home.swift
class Home : NSObject
{
var content: [String] = [
"Apple",
"Door",
"Evil",
"Error",
]
func homeDisplayContent(atIndex : Int) -> String
{
return content[atIndex]
}
}
var home = Home()
@IBOutlet weak var homeTableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
self.homeTableView.delegate = self
self.homeTableView.dataSource = self
self.homeTableView.reloadData()
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("homeCell", forIndexPath: indexPath) as! HomeCell
cell.contentLabel.text = home.homeDisplayContent(indexPath.row)
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.home.contents.count
}
HomePageViewController.swift
class Home : NSObject
{
var content: [String] = [
"Apple",
"Door",
"Evil",
"Error",
]
func homeDisplayContent(atIndex : Int) -> String
{
return content[atIndex]
}
}
var home = Home()
@IBOutlet weak var homeTableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
self.homeTableView.delegate = self
self.homeTableView.dataSource = self
self.homeTableView.reloadData()
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("homeCell", forIndexPath: indexPath) as! HomeCell
cell.contentLabel.text = home.homeDisplayContent(indexPath.row)
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.home.contents.count
}
您硬编码了模型类本身中的值。那你在干什么?为什么每次都返回第一个项目的循环?为什么不使用我的视图单元格(HomeCell.swift)?它最终与你给我写的东西一起工作,但我从未真正使用过我的HomeCell.swiftnow@Rcub3161:您正在索引路径的行的单元格中使用它。您直接从该方法设置标签。哦,好吧,我只是想澄清一下,当我调用home.homeDisplayContent(indexPath.row)时,它超越了我的HomeCell.swift的didSet中的值?@RCUB3116:实际上,didSet永远不会工作,因为您没有设置您的home cell的home属性。我最终在我的viewDidLoad()中添加了home=home()在这种情况下,我是否要设置我的主单元格的属性?
var home = Home()
@IBOutlet weak var homeTableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
self.homeTableView.delegate = self
self.homeTableView.dataSource = self
self.homeTableView.reloadData()
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("homeCell", forIndexPath: indexPath) as! HomeCell
cell.contentLabel.text = home.homeDisplayContent(indexPath.row)
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.home.contents.count
}