我想在UITableCell
的底部只设置一个UITableView
。像这样:
+----------------+
| +------------+ |
| | cell 1 | |
| +------------+ |
| +------------+ |
| | cell 2 | |
| +------------+ |
| +------------+ |
| | cell 3 | |
| +------------+ |
| |
| |
| |
| |
| |
| |
| +------------+ |
| | Last cell | |
| +------------+ |
+----------------+
但我不知道如何实现这一目标。
我看过:
但所有这些都是将所有单元格设置在UITableView
的底部,而我无法为只有一个单元格执行此操作。
是否可以将最后一个单元格设置在UITableView
的底部?我怎样才能实现它?
编辑:我已尝试使用两个部分作为评论建议,但它会复制第二部分cell 1
,cell 2
和cell 3
的空间。< / p>
我希望第二部分只有Last cell
而不是空格等于其余单元格的高度。之后,我想在第一部分的footerView中添加一个特定的空间。
提前致谢!
答案 0 :(得分:1)
我认为你需要的是这样的:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!
var array = ["1","2","3","4"]
var dummyInserted = false
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableView.reloadData()
if array.count < 15 {
array.insert("", at: array.count-1)
dummyInserted = true
tableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - UITableView DataSource
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
// MARK: - UITableView Delegate
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier")
cell?.textLabel?.text = array[indexPath.row]
return cell!
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if dummyInserted == true {
if indexPath.row == array.count-2 {
return tableView.bounds.size.height - CGFloat(((array.count-1) * 44))
}
}
return 44
}
}
因此,如果你知道你的表视图可以容纳例如15个可见行(也许你必须计算它),那么你可以
1)如果最后一个单元格可见,则在第二个最后一个索引
处向您的数组中插入一个虚拟值2)将虚拟行的高度设置为高度,最后一个值位于表视图的底部
也许你必须改变一些代码,但它应该给你一个很好的起点我的想法
应该看起来像
答案 1 :(得分:0)
为uitableview.Put创建两个部分FirstSection中的第一个项目和第二个部分中的另一个项目。
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString *sectionName;
switch (section)
{
case 0:
sectionName = NSLocalizedString(@"mySectionName", @"mySectionName");
break;
case 1:
sectionName = NSLocalizedString(@"myOtherSectionName", @"myOtherSectionName");
break;
// ...
default:
sectionName = @"";
break;
}
return sectionName;
}