像appStore上的tableView实现[关闭]

Posted

技术标签:

【中文标题】像appStore上的tableView实现[关闭]【英文标题】:tableView implementation like on appStore [closed] 【发布时间】:2014-02-04 08:47:53 【问题描述】:

之前

之后

基本上我的观点是我有 customTableViewCell,它在最右边有按钮(与 image1“显示版本历史记录”相同)。当我单击时,我想添加一个动态数量的 subviewCell,它位于 customTableViewCells 下。

我的问题是,这是如何实施的?有什么图书馆可以参考吗?

【问题讨论】:

哪种方法最好?你怎么解决的? 【参考方案1】:

我希望你没有搜索它: 让我们看看这些链接:

UITableViewCell expand on click gitHub Expand / Collapse UITableViewCell with different cell and data source Expand collapse UITableViewCell GitHub Accordion table cell - How to dynamically expand/contract uitableviewcell?

【讨论】:

谢谢!我会检查他们所有..【参考方案2】:

看看这些表格视图的实现

https://www.cocoacontrols.com/controls/jkexpandtableview

https://www.cocoacontrols.com/controls/sdnestedtable

https://www.cocoacontrols.com/controls/uiexpandabletableview

https://www.cocoacontrols.com/controls/ocborghettiview

【讨论】:

【参考方案3】:

这很容易。

您想跟踪该部分是否已展开。为此使用实例变量(或属性) 如果未展开,则在 tableView:numberOfRowsInSection: 中为可展开部分返回 1 如果它被扩展,则返回 1 + t:numberOfRowsInSection: 中扩展单元的数量 在tableView:didSelectRowAtIndexPath: 中,您可以在点击第一个单元格并插入或删除展开的行时切换展开状态。

例如:

@interface MBMasterViewController () 
    BOOL firstSectionExpanded;

@end

@implementation MBMasterViewController

#pragma mark - Table View

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    return 3;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    NSInteger count = 1;
    if (section == 0 && firstSectionExpanded)  count = 3; 
    return count;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    if (indexPath.row == 0) 
        cell.textLabel.text = [NSString stringWithFormat:@"Section %ld", (long)indexPath.section];
    
    else 
        cell.textLabel.text = [NSString stringWithFormat:@"Sub Cell %ld", (long)indexPath.row];
    
    return cell;


- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    if (indexPath.row != 0) 
        // don't select sub cells
        return nil;
    
    return indexPath;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    NSArray *cells = @[ [NSIndexPath indexPathForRow:1 inSection:indexPath.section],
                        [NSIndexPath indexPathForRow:2 inSection:indexPath.section]];

    NSArray *cellsToDelete;
    NSArray *cellsToInsert;
    if (indexPath.section == 0) 
        if (firstSectionExpanded) 
            cellsToDelete = cells;
        
        else 
            cellsToInsert = cells;
        
        firstSectionExpanded = !firstSectionExpanded;
    

    if (cellsToDelete) 
        [tableView deleteRowsAtIndexPaths:cellsToDelete withRowAnimation:UITableViewRowAnimationAutomatic];
    
    if (cellsToInsert) 
        [tableView insertRowsAtIndexPaths:cellsToInsert withRowAnimation:UITableViewRowAnimationAutomatic];
    
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

【讨论】:

以上是关于像appStore上的tableView实现[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何构建像 App Store 这样的 UITableView? [关闭]

如何制作像 Facebook ios app 或 tumblr app 这样的漂亮 Tableview? [关闭]

如何使滚动视图像 Apple AppStore “特色页面”?

像 Facebook 时间线一样创建 tableview ...... iPhone 应用程序 [关闭]

带有数组信息的 UIViewController 上的 TableView [关闭]

Tableview UiDesign复杂性[关闭]