uitableview:创建一个可折叠的tableview(可用于下拉菜单)

时间:2011-03-30 14:40:00

标签: iphone uitableview

我是iphone开发的新手,无法理解各种方法。我想创建一个可折叠的表格视图,只需点击一下按钮即可展开和折叠。

我的谜题中有以下内容

1)我想我必须将这两种方法用于动画

[collapsibleTableView deleteRowsAtIndexPaths:editableIndexArray withRowAnimation:UITableViewRowAnimationTop ];
[collapsibleTableView insertRowsAtIndexPaths:editableIndexArray withRowAnimation:UITableViewRowAnimationTop ];

但我不确定我需要传递给deleteRowsAtIndexPath:方法和insertRowsAtIndexPath:方法的论据。

2)我有一个数组,它是该表的数据源。

如果你能让我明白它究竟是如何完成的,那将是很棒的。

2 个答案:

答案 0 :(得分:1)

得到答案,实施是

    - (NSArray*)indexPathsInSection:(NSInteger)section {
    NSMutableArray *paths = [NSMutableArray array];
    NSInteger row;

    for ( row = 0; row < [self numberOfRowsInSection:section]; row++ ) {
        [paths addObject:[NSIndexPath indexPathForRow:row inSection:section]];
    }

    return [NSArray arrayWithArray:paths];
}

-(NSInteger)numberOfRowsInSection:(NSInteger)section {

    return 4;
}


-(IBAction)expandCollapseMenu {

    NSArray *paths = [self indexPathsInSection:0];
    if (isExpanded) {
        isExpanded=NO;
        [actionBtn setTitle:@"Expand" forState:UIControlStateNormal];

        [menuTblView deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade];


    }
    else {
        isExpanded=YES;
        [actionBtn setTitle:@"Collapse" forState:UIControlStateNormal];
        [menuTblView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade ];
    }




}

答案 1 :(得分:0)

通过扩展和合同,你只是意味着删除所有条目(整个表格或按部分?),或者你的意思是动画从屏幕上删除/添加tableview。

如果您的意思是删除/添加行,那么您最好的选择是拥有一个包含所有真实有效数据的数组,以及一个包含“这是用户可以看到的内容”数据的数组 - 这样您就可以清除删除/添加行时它或它的一部分。

要获取indexPaths,您可以使用[NSIndexPath indexPathForRow:<#(NSUInteger)#> inSection:<#(NSUInteger)#>]创建单个路径并将它们推送到您传递给该方法的数组中。

只需确保在添加/删除行时保持“这是用户可以看到的内容”数组,就像tableview显示它将请求基础数据的单元格一样。