我对Objective C编程很新,并且有一个带有自定义单元格的UITableView设置.我想这样做,以便用户可以触摸将添加另一个单元格的按钮,此按钮将仅显示在最后一个单元格中.目前,它没有出现.这
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {workoutTableViewCell *cell = (workoutTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // Configure the cell... if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } [cell.addButton setTitle:(NSString *)indexPath forState:UIControlStateApplication]; [cell.textLabel setText:[NSString stringWithFormat:@"Row %i in Section %i", [indexPath row], [indexPath section]]]; NSInteger sectionsAmount = [tableView numberOfSections]; NSInteger rowsAmount = [tableView numberOfRowsInSection:[indexPath section]]; if ([indexPath section] == sectionsAmount - 1 && [indexPath row] == rowsAmount - 1) { NSLog(@"Reached last cell"); [cell.addButton setHidden:NO]; if (lc == NO) {[[self tableView] reloadData]; lc = YES; } } return cell; }以下UITableViewDataSource方法将帮助您返回部分中可用的确切行数.在这里,你需要返回额外的,因为你想拥有最后一个按钮.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return yourRowCount + 1; }
现在在下面的方法中,您将使用indexpath.row检查行号
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *lastCellIdentifier = @"LastCellIdentifier"; static NSString *workoutCellIdentifier = @"WorkoutCellIdentifier"; if(indexPath.row==(yourRowCount+1)){ //This is last cell so create normal cell UITableViewCell *lastcell = [tableView dequeueReusableCellWithIdentifier:lastCellIdentifier]; if(!lastcell){ lastcell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:lastCellIdentifier]; CGRect frame = CGRectMake(0,0,320,40); UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; [aButton addTarget:self action:@selector(btnAddRowTapped:) forControlEvents:UIControlEventTouchUpInside]; aButton.frame = frame; [lastcell addSubview:aButton]; } return lastcell; } else { //This is normal cells so create your worktouttablecell workoutTableViewCell *cell = (workoutTableViewCell *)[tableView dequeueReusableCellWithIdentifier:workoutCellIdentifier]; //Configure your cell } }
或者你可以像编程一样创建UIView并将其设置为FooterView,如@student在评论代码中所建议的那样,
CGRect frame = CGRectMake(0,0,320,40); UIView *footerView = [[UIView alloc] initWithFrame:frame]; UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; [aButton addTarget:self action:@selector(btnAddRowTapped:) forControlEvents:UIControlEventTouchUpInside]; aButton.frame = frame; [footerView addSubView:aButton]; [yourTableNmae setTableFooterView:footerView];
声明方法如下
-(IBAction)btnAddRowTapped:(id)sender{ NSLog(@"Your button tapped"); }