0

UITableViewCell 中的按钮有问题。请帮我。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
        switch (indexPath.section) {
            case 0:
                break;
            case 2:{
                    cell.accessoryType = UITableViewCellAccessoryNone;
                    // Make backgroung invisible
                    [self cellBackground:cell];
                    // Make the save button
                    [self saveButton:cell];

                    [self showButton:cell];

                }
                break;

        }
    } 
    return cell;
}
- (void)saveButton:(UITableViewCell *)cell {
    UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [saveButton setTitle:@"Save" forState:UIControlStateNormal];
    saveButton.frame = CGRectMake(45, 0, 300, 45);
    saveButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    saveButton.contentEdgeInsets = UIEdgeInsetsMake(0,10,0,0);

    [cell addSubview:saveButton];
}

- (void)showButton:(UITableViewCell *)cell{
    UIButton *showButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [showButton setTitle:@"Show" forState:UIControlStateNormal];
    showButton.frame = CGRectMake(45, 0, 300, 45);
    showButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
    showButton.contentEdgeInsets = UIEdgeInsetsMake(0,10,0,0);

    [cell addSubview:showButton];
 }

我只想在 indexPath.section = 2 中并排设置 saveButton 和 showButton,并且按钮的大小应该适合横向或纵向单元格的大小。你知道怎么做吗?谢谢。

4

2 回答 2

1

你这样做是完全错误的。我不会讨论一般部分,但您绝对应该继承UITableViewCell并添加saveButtonshowButton作为子类的方法,并在启动类时运行这些方法。

并将它们添加到cell.contentView. 不要cell

于 2013-09-12T13:26:24.880 回答
-1

首先,您错误地构建了这些单元格:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

这可以返回 nil 所以你应该检查:

 if(!cell) { 
      //construct new cell here.
 }

为了最好地处理这两种旋转,最好将 button.frame.origin.x = cell.view.frame.width - 10.0f 并将锚点设置在按钮的右侧。

于 2013-09-12T12:34:14.350 回答