gpt4 book ai didi

objective-c - 在 UITableView Objective-C 中滚动更改数据

转载 作者:行者123 更新时间:2023-12-01 19:18:07 25 4
gpt4 key购买 nike

我有一个 uitableView,在每一行我有 4 个按钮,所有按钮的名称都是“W”,

当我运行程序时:第一行的前 4 个按钮只有“W”

当我滚动我的表格时,我会得到更多的按钮名称“W”

有谁知道是什么问题?

提前致谢

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;

int column = 4;
for (int i=0; i<column; i++) {

// position in the parent view and set the size of the button
UIButton *myButton = [[UIButton alloc]initWithFrame:CGRectMake(0.5+83*i,10, 80,115)];
myButton.tag=(column*indexPath.row)+i;
[cell.contentView addSubview:myButton];
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
myButton.backgroundColor = [UIColor whiteColor];


UILabel *btnTitle = [[UILabel alloc] initWithFrame:CGRectMake(25, 10, 30, 10)];
[btnTitle setText:@"W"];
[btnTitle setTextColor:[UIColor blackColor]];
[myButton addSubview:btnTitle];

}
return cell;
}

enter image description here

最佳答案

阿比泽姆说。 “单元格将有许多按钮......和 ​​btnTitles” 他是对的。

您的代码将在滚动表格 View 时调用“内存不足”和“慢速”。

创建一个 CustomTableViewCell 类。

@interface CustomTableViewCell : UITableViewCell
{
NSArray *_buttons;
}
@property (nonatomic, strong) IBOutlet UIButton *button1, button2, button3, button4;
@property (nonatomic, strong, readonly) NSArray *buttons;
@end
@implementation CustomTableViewCell
...
@dynamic buttons;
- (NSArray*)buttons
{
if (_buttons == nil) {
_buttons = [NSArray arrayWithObjects:self.button1, self.button2, self.button3, self.button4, nil];
}
return _buttons; // I fixed it _button --> _buttons
}
@end

  • 创建一个空的 xib 文件。
  • 拖放一个 UITableViewCell。
  • 并在 UITableViewCell 上拖放 4 个 UIButton。
  • 选择 UITableViewCell 自定义类并将其更改为 CustomTableViewCell。
  • 将 button1、button2、button3、button4 链接到 xibs 项。

  • - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"Cell";

    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = (CustomTableViewCell*)[[[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil] objectAtIndex:0];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    int column = 4;
    for (int i=0; i<column; i++) {
    // position in the parent view and set the size of the button
    UIButton *myButton = [cell.buttons objectAtIndex:i];
    //myButton.frame = CGRectMake(0.5+83*i,10, 80,115); You can design on interface builder
    myButton.tag=(column*indexPath.row)+i;
    [cell.contentView addSubview:myButton];
    [myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    myButton.backgroundColor = [UIColor whiteColor];

    //myButton.textLabel.frame = CGRectMake(25, 10, 30, 10); You can design on interface builder
    [myButton.textLabel. setText:@"W"];
    [myButton.textLabel. setTextColor:[UIColor blackColor]];
    }
    return cell;
    }

  • 对不起。不是 "ni"--> "nil"
  • 返回 _button --> 返回 _buttons

  • @interface CustomTableViewCell : UITableViewCell
    {
    NSArray *_buttons;
    }
    @property (nonatomic, strong) IBOutlet UIButton *button1, button2, button3, button4;
    @property (nonatomic, strong, readonly) NSArray *buttons; // <----- Check it.
    @end

    关于objective-c - 在 UITableView Objective-C 中滚动更改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11772901/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com