Ios 试图返回UITableView中数组的每个索引

Ios 试图返回UITableView中数组的每个索引,ios,swift,Ios,Swift,我正在尝试在我的应用程序中使用MVC模型。这是我第一次使用它,因为我只是在学习iOS编程。有几件事你需要知道才能帮助我。首先:我有一个名为Home.swift的模型,在这个模型中我有一个数组和一个函数。“Home.swift”: 最后是我的视图控制器“HomePageViewController.swift”: 我想做的是能够获取Home.swift(我的模型)中我的数组中的每个索引,并将它们显示在各自的单元格中。我相信我需要创建一个家庭对象数组,但我不知道如何去做这件事。很抱歉这段文字和糟糕的

我正在尝试在我的应用程序中使用MVC模型。这是我第一次使用它,因为我只是在学习iOS编程。有几件事你需要知道才能帮助我。首先:我有一个名为Home.swift的模型,在这个模型中我有一个数组和一个函数。“Home.swift”:

最后是我的视图控制器“HomePageViewController.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
}