我们的应用每个月都在变化。修改节和行(添加,删除)非常困难。我需要扫描每个UITableViewDelegate的方法并更改它。我正在使用switch-case方法。我需要更优雅的方法。
我发布了两种方法的代码,但实际上我必须修改5种方法。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSInteger rows;
switch (section)
{
case 0:
{
rows = 3;
break;
}
case 1:
{
rows = 4;
break;
}
case 2:
{
rows = 4;
break;
}
case 3:
{
rows = 4;
break;
}
case 4:
{
rows = 7;
break;
}
default:
rows = 1;
break;
}
return rows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.section)
{
case 0:
{
switch (indexPath.section)
{
case 0:
{
break;
}
case 1:
{
break;
}
case 2:
{
break;
}
default:
break;
}
break;
}
}
}
答案 0 :(得分:1)
使用.plist文件,您可以直接更改其内容,而UIViewController
将基于此构建他的UITableView
。像我的魅力一样工作。
答案 1 :(得分:1)
创建一个类 TableManager
将您的表视图传递给此类,并让此类提供所有tableview的数据。通过设置标记值区分表格视图。
所以现在你可以控制这一课中的所有课程表。
使用枚举代替切换案例中的数字。它将提高代码的可读性。
根据您的实际要求,您可以从plist中操纵此类的行为。
让我提供一些代码:
定义枚举器
typedef enum { FIRST_TABLE, SECOND_TABLE, THIRD_TABLE } TableViews;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[TableManager getNumberOfRowsForTableView:tableView];
}
在TableManager中
+ (NSInteger)getNumberOfRowsForTableView:(UITableView*)theTableView
{
if(theTableView.tag == FIRST_TABLE) //FIRST_TABLE is an enum
{
//Your conditions goes here
return 3;
}
}
答案 2 :(得分:-1)
我创建了这个完全符合您要求的类:https://github.com/Morbix/TableManager
TableManager的基本用法
import TableManager // 1 - import TableManager
class ViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
let data = (1...1_000).map { "Row \($0)" }
data.forEach { element in
let row = tableView.addRow() // 2 - Add a row
row.setConfiguration { (row, cell, indexPath) in // 3 - And configure it
cell.textLabel?.text = element
}
}
tableView.reloadData()
}
}
您可以添加Section和Rows,控制可见性,配置页眉和页脚等...