我花了好几个小时试图找到解决方案,但我总是一无所获。
我正在尝试在TableView
内创建一个段控件,对于段控件有两个CustomCell
个视图。
https://www.youtube.com/watch?v=dw7kytoA3KU&t=198s是我想要完成的一个完美的例子,但是用户插入了1个CustomCell并且代码有点令人困惑。
我的第一个CustomCell包含图像,名称和数字。 我的第二个CustomCell只包含一个图像。
所以我的问题是......
我应该如何为两个CustomCell创建两个数组?
我正在努力完成的例子
自定义单元格1:
let names = ["Pizza","Soup","Tacos","Chicken", "Beef"]
let image = [UIImage(named: "Pizza1"), UIImage(named: "Soup1"), UIImage(named: "Tacos1"), UIImage(named: "Chicken1"), UIImage(named: "Beef1")]
let numbers = ["1", "2", "3", "4", "5"]
自定义单元格2:
let photo = [UIImage(named: "Pic1"), UIImage(named: "Pic2"), UIImage(named: "Pic3")]
根据我的研究,当我需要将CustomCell文件和两个CustomCell调用到我的代码中时,这是正确的吗?
let nib = UINib(nibName: "CustomCell", bundle: nil)
tableView.register(nib, forCallReuseIdentifier: "CustomCell1")
tableView.register(nib, forCallReuseIdentifier: "CustomCell2")
应该为此归还什么?
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
这部分是我对输入内容感到困惑的地方
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
总结:我正在尝试在tableView中创建一个包含2个CustomCell的段控件。我希望段的第一个视图是具有图像,名称和编号的CustomCell。段的第二个视图只有图像。
谢谢!
答案 0 :(得分:0)
我应该如何为两个CustomCell创建两个数组?
let names = ["Pizza","Soup","Tacos","Chicken", "Beef"]
let image = [UIImage(named: "Pizza1"), UIImage(named: "Soup1"), UIImage(named: "Tacos1"), UIImage(named: "Chicken1"), UIImage(named: "Beef1")]
let numbers = ["1", "2", "3", "4", "5"]
有三个阵列可以工作,但有点奇怪。 Swift结构和一个数组可能更容易使用:
struct Food {
var name: String
var image: UIImage
var number: Int
}
let foods = [
Food(name: "Pizza", image: UIImage(named: "Pizza1"), number: 1),
Food(name: "Soup", image: UIImage(named: "Soup1"), number: 2),
Food(name: "Tacos", image: UIImage(named: "Tacos1"), number: 3),
Food(name: "Chicken", image: UIImage(named: "Chicken1"), number: 4),
Food(name: "Beef", image: UIImage(named: "Beef1"), number: 5)
]
根据我所研究的内容,当我需要将CustomCell文件和两个CustomCell调用到我的代码中时,这是正确的吗?
let nib = UINib(nibName: "CustomCell", bundle: nil)
tableView.register(nib, forCallReuseIdentifier: "CustomCell1")
tableView.register(nib, forCallReuseIdentifier: "CustomCell2")
差不多......如果你有两个自定义单元格,我希望看到两个笔尖:
let nib1 = UINib(nibName: "CustomCell1", bundle: nil)
tableView.register(nib1, forCallReuseIdentifier: "CustomCell1")
let nib2 = UINib(nibName: "CustomCell2", bundle: nil)
tableView.register(nib2, forCallReuseIdentifier: "CustomCell2")
应该归还什么?
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
表格中的单元格数量。所以它可能是:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return foods.count
}
这部分是我对输入内容感到困惑的地方
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
这是您的应用将某个单元格出列的位置,并在其出现在表格中之前配置其内容:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell1", for: indexPath)
cell.nameLabel.text = foods[indexPath.row].name
return cell
}
我还不确定你打算用SegmentedControls做什么......你想让每个单元格都包含一个分段控件吗?那将是非常不寻常的。
答案 1 :(得分:0)
首先,我建议您浏览一些有关如何使用UITableViews和UISegmentedControl的教程,因为它看起来像是iOS开发的初学者。现在回答你的问题:
#1. How should I create two array for the two CustomCell?
我建议你学习在Swift中创建NSObjects。使用此功能,您可以在对象上设置名称,图像,数字等属性。然后,您可以拥有一个对象集合,并在您的数据源中使用它们。
#2. Regarding Custom UITableViewCells.
是的,您需要注册自定义UITableViewCells才能使用它们。或者做故事板。
#3. func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
在此委托方法中指定应在UITableView中显示的行数。例如,如果你有一个食物对象的数组,你将返回foods.count。
#4. func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
这是您创建和自定义将在UITableView的行上显示的单元格的部分。
如果你想要一个UITableView和UISegmentedControl,我建议你通过在你的UIViewController视图上添加一个UISegmentedControl和两个UITableView来最简单的方法。根据选择的段更改可见的UITableView,您可以在UISegmentedControl的值更改事件中捕获它。