Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

if we click on Custom Section Header in UITableView, then move that section to top

I have a Custom Section Header in UITableView, on that section header there placed UIButton on its very right.What i want is, if i click on UIButton, that particular Section Header should scrolls to Top. That's it

Any suggestion, piece of code will be admired.

like image 620
Shahab Qureshi Avatar asked Dec 09 '11 06:12

Shahab Qureshi


People also ask

What is Section in UITableView?

UITableView with sections allows us to separate the list into different categories, so the list looks more organized and readable. We can customize sections as per our need, but in this tutorial, we are covering the basic UITableview with sections. Here's is the video if you prefer video over text. Let Create An App.

What is IndexPath UITableView?

IndexPath contains information about which row in which section the function is asking about. Base on this numbers you are configuring the cell to display the data for given row.

How to add header and footer in tableView in Swift?

To create a basic header or footer with a text label, override the tableView:titleForHeaderInSection: or tableView:titleForFooterInSection: method of your table's data source object. The table view creates a standard header or footer for you and inserts it into the table at the specified location.


1 Answers

Step 1: set the size of Section header. Example as follows.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 55;
}

Step 2: create & return the customized section header.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *aView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 55)];
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
    [btn setFrame:CGRectMake(0, 0, 320, 55)];
    [btn setTag:section+1];
    [aView addSubview:btn];
    [btn addTarget:self action:@selector(sectionTapped:) forControlEvents:UIControlEventTouchDown];
    return aView;
}

Step 3: return number of sections. ( for example 10 here )

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 10;
}

Step 4 : number of rows per section. ( for example, 4 rows for each section )

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

Step 5 : create & return cell (UITableViewCell for each Row)

- (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];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    cell.textLabel.text=[NSString stringWithFormat:@"%i_%i",indexPath.section,indexPath.row];

    return cell;
}

Step 6: add the event to handle the TouchDown on section header.

- (void)sectionTapped:(UIButton*)btn {
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:btn.tag-1] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
like image 122
Sagar Kothari Avatar answered Sep 21 '22 17:09

Sagar Kothari