如何自定义UITableView包含很多行,每行包含多个子行?

时间:2013-05-03 12:53:53

标签: ios uitableview

enter image description here

如何像这样定制UITable:UITableView包含许多行,每行包含许多子行。使用添加按钮添加子行?

4 个答案:

答案 0 :(得分:1)

您可以创建这样的结构

[
    {
        "Title": "Section 1",
        "Rows": [
            {
                "Title": "Row 1",
                "Rows": [
                    {
                        "Title": "Sub Row 1", 
                        "Rows":[]
                    }
                ]
            }
        ]
    }
]

这是一系列词典。每个部分都有一个行数组,每行都有一个子数组。

Source Code

答案 1 :(得分:0)

您可以使用分组tableview,但它不会像您的照片中那样为您提供完整的iphone行宽。

如果你使用普通的tableview它应该给你完整的行外观,但添加加号按钮可能会变得困难。

你需要有一个源代码,让我们为每个部分行说一个数组或一个字典

对于图像使用cell.imageView.image= yourimage;

使用箭头cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

对于那个(10),您需要使用cell.accessoryView= yourcustomview

//create multiple section according to your picture it is 2 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //return an integer here from a source,variable or just return static int 
    return 2; 
}
//add plus button for each section
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
// Create header view and add label as a subview
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 400, 320, 400)];

    //add a button to open edit
    UIButton *declineButton=[UIButton buttonWithType:UIButtonTypeCustom];
    [declineButton setTag:section];
    declineButton.titleLabel.tag=1;
    [declineButton setFrame:CGRectMake(450,50,70,40)];
    [declineButton setTitle:@"Edit" forState:UIControlStateNormal];
    UIImage *declinebuttonImage = [[UIImage imageNamed:@"orangeButton@2x.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)];
    [declineButton setBackgroundImage:declinebuttonImage forState:UIControlStateNormal];
    [declineButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [declineButton addTarget:self action:@selector(declineEvent:) forControlEvents:UIControlEventTouchUpInside];

    [view addSubview:declineButton];
    return view;
}

- (IBAction)declineEvent:(id)sender {
    UIButton *button = (UIButton *)sender;
    NSInteger row = button.tag;
   NSInteger column = button.titleLabel.tag;
    //NSIndexPath *selectedSection= [NSIndexPath indexPathForRow:column inSection:row];
    NSLog(@"Row is %i column is %i",row,column);
    //populate your source array for the section according to your needs here 

}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return yoursourceforthissection;

}

答案 2 :(得分:0)

我认为您应该使用具有表格视图的自定义表格视图单元格。

http://www.appcoda.com/customize-table-view-cells-for-uitableview/

检查这希望这会对你有帮助。

答案 3 :(得分:0)

我在Github上有类似的项目。 基本上它是一个带可扩展部分的UITableView。 以下步骤使我的工作:

    对于NSMutableDictionary
  1. dataSource,dict包含NSMutableArrays作为每行的值作为键。
  2. 您将拥有与NSMutableArray相同尺寸的其他NSMutableDictionary。此NSMutableArray包含BOOL个值,YES表示该部分已展开,NO表示折叠部分。在我的情况下,默认情况下折叠所有部分。 3. tableView中的部分数量是NSMutableDictionary
  3. 的大小
  4. 如果NSMutableArray的{​​{1}}值在某个索引路径中包含Bool,则此部分的行数是您作为索引路径的值检索的数组的大小来自您的YES。否则,此部分只有1行。
  5. 示例:

    NSMutableDictionary

    只需检查出来并随意使用代码:

    GitHub Link