像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 应用程序 [关闭]