gpt4 book ai didi

ios - 当您将 UIButton 放入 UITableViewCell 中时,TitleLabel 会损坏

转载 作者:行者123 更新时间:2023-12-02 16:30:13 25 4
gpt4 key购买 nike

我有 UITableView 和自定义 UITableViewCell。自定义单元格包含 UIButtonUILabel

在这里,我观察到 UILabel 文本按照我的预期发生了变化,但 UIButton 文本没有变化。

当我将按钮滚动到屏幕之外时,更改 UIButton 的标签。

为什么它不起作用?我使用 Xcode 6 并使用下面的代码。

<小时/>

ViewController.h

#import <UIKit/UIKit.h>
#import "customTableViewCell.h"

@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>

@property (weak, nonatomic) IBOutlet UITableView *tableView;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView registerNib:[UINib nibWithNibName:@"customTableViewCell" bundle:nil] forCellReuseIdentifier:@"customTableViewCell"];
}

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

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
customTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"customTableViewCell" forIndexPath:indexPath];
cell.button.titleLabel.text = @"Label does not change immediately";
cell.label.text = @"change label";
return cell;
}

customeTableViewCell.h

#import <UIKit/UIKit.h>

@interface customTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (weak, nonatomic) IBOutlet UILabel *label;

@end

最佳答案

这是因为UIButton类有多种状态(正常、选定、突出显示、禁用)。当您更改其内部 UILabel 的文本属性(UIButtontextLabel 属性)时,它的属性将被 setState 覆盖> 函数,在加载表时调用。

要更改按钮标签中的文本,您需要调用 setTitle:forState: 方法。这是您修复后可以工作的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
customTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"customTableViewCell" forIndexPath:indexPath];
[cell.button setTitle:@"Now it works" forState:UIControlStateNormal];
cell.label.text = @"change label";
return cell;
}

为了完整起见,您还可以将 setAttributedTitle:forState: 方法与 NSAttributedString 一起使用,这样您实际上可以将自己的特定格式字符串设置为标题。

关于ios - 当您将 UIButton 放入 UITableViewCell 中时,TitleLabel 会损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799292/

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