gpt4 book ai didi

ios - BOOL UIButton 上的按钮选择

转载 作者:行者123 更新时间:2023-11-29 01:44:26 25 4
gpt4 key购买 nike

我试图在基于 JSON 的 bool 值时显示处于选定状态的按钮。这是我的自定义 UITableViewCell 代码:

TwitterCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TwitterCell"];

if (cell == nil) {
cell = [[TwitterCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TwitterCell"];
}

NSDictionary *data = tweets[indexPath.row];

id favorited = data[@"favorited"];
NSLog(@"%@",favorited);
id retweeted = data[@"retweeted"];
NSLog(@"%@",retweeted);

if ((int)favorited == 1) {
[cell.favoriteButton select];
} else {
[cell.favoriteButton deselect];
}

if ((int)retweeted == 1) {
[cell.retweetButton select];
} else {
[cell.retweetButton deselect];
}

这是我的自定义 TableViewCell 类中可能存在的问题点。我准备重用的地方:

- (void)prepareForReuse
{
[super prepareForReuse];
self.favoriteButton.selected = NO;
self.tweetLabel.text = nil;
self.profilePicture.image = nil;
self.nameLabel.text = nil;
self.retweetButton.selected = NO;
self.usernameLabel.text = nil;
}

最佳答案

您提供的代码存在一些问题。

1 - 将 NSNumber 转换为 int

从字典中检索favorited(可能是一个数字)将返回 NSNumber这是数字的包装类。当您使用 NSLog 时,它将打印其 description 方法的结果,本质上是打印出基础数字。

当您将 NSNumber 转换为 int 时,您不会获得底层数字,而是获得整数格式的内存地址。

查看此代码和一些示例输出:

NSNumber *favorited = @(1);
NSLog(@"%@", favorited);
NSLog(@"%d", (int)favorited);

favorited = @(0);

NSLog(@"%@", favorited);
NSLog(@"%d", (int)favorited);

输出

2015-08-19 07:04:36.235 xctest[589:7545] 1
2015-08-19 07:04:36.236 xctest[589:7545] 18
2015-08-19 07:04:36.236 xctest[589:7545] 0
2015-08-19 07:04:50.720 xctest[589:7545] 2

要检索基础数字,必须使用适当的*value 方法之一,例如 integerValuelongValue .

2 - 调用选择取消选择

除非您创建了自定义子类,否则 UIButton 上都不存在这些方法。要正确调整按钮的选定状态,您需要使用 selected属性,就像您在 prepareForReuse 方法中所做的那样。

button.selected = YES; // or NO

综合考虑

根据上述信息,我们可以更改部分单元格创建方法,如下所示:

if ([favorited integerValue] == 1) {
cell.favoriteButton.selected = YES;
} else {
cell.favoriteButton.selected = NO;
}

if ([retweeted integerValue] == 1) {
cell.retweetButton.selected = YES;
} else {
cell.retweetButton.selected = NO;
}

关于ios - BOOL UIButton 上的按钮选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32087531/

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