1

嗨,我有一个表格,其中包含来自带有地址的 json 信息,按下按钮时我设法按社区对它们进行排序,我想用相同的按钮创建具有社区的可扩展和可折叠部分。

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

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] init];
}
NSString *cellName = [[myArray objectAtIndex:indexPath.row] valueForKeyPath:@"name"];
NSString *cellState = [[myArray objectAtIndex:indexPath.row] valueForKeyPath:@"desc"];
NSString *cellTodo = [NSString stringWithFormat:@"%@: %@", cellState, cellName];
[[cell textLabel] setFont:[UIFont systemFontOfSize: 11.0]];
cell.textLabel.text = cellTodo;
return cell;
}


- (IBAction)PorBarrio:(id)sender {
NSSortDescriptor * sortDesc = [[NSSortDescriptor alloc] initWithKey:@"desc" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
[myTableView reloadData];
}
4

2 回答 2

3

我个人的投票是SLExpandableTableView。你可以在GitHub 上找到它。

它非常易于使用,但没有很好的文档记录;目前没有例子。它基本上充当常规UITableView类的扩展,并且与情节提要原型/自定义外观和感觉配合得很好。因此,如果您已经拥有 UITableView,则无需进行大量返工。

我花了一些时间弄清楚如何实现该expandingCellForSection:方法 - 这是我的,以便其他人更容易:

- (UITableViewCell<UIExpandingTableViewCell> *)tableView:(SLExpandableTableView *)tableView expandingCellForSection:(NSInteger)section {

    NSString *CellIdentifier = @"amenitysectioncell_immediate";
    AmenitySectionTableViewCell *cell = (AmenitySectionTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[AmenitySectionTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdientifier];
    }

    cell.sectionTitle.text = @"blah blah";

    return cell;
}

诀窍是UITableViewCell为您的部分单元格子类化:

@interface AmenitySectionTableViewCell : UITableViewCell<UIExpandingTableViewCell>  

@property (nonatomic,strong) IBOutlet UILabel *sectionTitle; 

@end

享受!

于 2014-01-07T21:25:56.493 回答
0
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

*使用 uiTableView 委托方法“viewForHeaderInSection”并返回自定义 UIView。

*添加一个 UIButton 作为子视图,操作为“expandable:(id)sender”,检查发件人 ID 作为部分编号并重新加载表格视图。

检查此链接:

http://iostechnotips.blogspot.in/2014/05/expandable-uitableview.html

例子 :

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection(NSInteger)section {
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0,2 , tableView.frame.size.width, 20)];

    UIButton * headerButton=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, view.frame.size.width, view.frame.size.height)];
    [headerButton addTarget:self action:@selector(expandeble:) forControlEvents:UIControlEventTouchDown];
    [headerButton setTag:section];
    [headerButton setTitle:[NSString stringWithFormat:@"Section %d",section] forState:UIControlStateNormal] ;
    [view addSubview:headerButton];
    view.backgroundColor=[UIColor grayColor];
    return view;
}

-(IBAction)expandeble:(id)sender{
    UIButton* myButton = (UIButton*)sender;
    [self exapand:(int)myButton.tag];
}

-(void)exapand:(int)tag{
    if (senctionIndex != tag) {
    senctionIndex=tag;
    [_expandableTable reloadData];
}}
于 2014-09-24T09:15:56.130 回答