UITableView:我想使用一种方法,可以很容易地修改节和行(添加,删除)。

时间:2012-01-12 08:25:40

标签: ios uitableview

我们的应用每个月都在变化。修改节和行(添加,删除)非常困难。我需要扫描每个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;            
     }
  }
}

3 个答案:

答案 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,控制可见性,配置页眉和页脚等...