在 UITableviewcell 中存储布尔值

发布于 2025-01-07 10:31:26 字数 62 浏览 1 评论 0原文

如何在 UITableview 的每一行中存储布尔值。当选择该特定单元格时,我需要检索存储在单元格中的布尔值。

How can I store a boolean value in each row of a UITableview. I need to retrieve the boolean value stored in the cell, when that particular cell is selected.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

时光暖心i 2025-01-14 10:31:27

方法有很多种:
1.可以使用UITableViewCell.tag属性
2.您可以创建自己的从 UITableViewCell 继承的单元格类,并为您的 BOOL 值添加普通属性
3.您可以使用与表视图关联的数组,当您选择单元格时,只需使用indexPath在数组中查找关联的值
ETC。

There are so many ways:
1. You can use UITableViewCell.tag property
2. You can create your own cell class inherited from UITableViewCell and add there normal property for you BOOL value
3. You can use array associated with your tableview and when you get cell selected, just use indexPath to find associated value in your array
etc.

那些过往 2025-01-14 10:31:27

我建议在 UITableViewCell 中使用标签属性。

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{

    static NSString *identifier = @"MyIndetifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  //make sure tu put here, or before return cell. 
  cell.tag = 0; //0 =NO, 1=YES;

  return cell;
}

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    BOOL boolean = cell.tag; // return 0 or 1. based on what boolean you set on this particular row.
}

I recommend to use tag property in UITableViewCell.

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{

    static NSString *identifier = @"MyIndetifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  //make sure tu put here, or before return cell. 
  cell.tag = 0; //0 =NO, 1=YES;

  return cell;
}

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    BOOL boolean = cell.tag; // return 0 or 1. based on what boolean you set on this particular row.
}
っ左 2025-01-14 10:31:27

您可能还有其他存储空间,用于保存表格单元格标题或副标题等内容。将布尔值存储在那里。使用它将 bool 转换为可以放入数组或字典中的内容。

[NSNumber numberWithBool:YES]

例如,如果您使用 NSArray 字符串来存储标题,请改用字典数组。每个字典都有一个“标题”和(例如)“isActive”布尔值(存储为 NSNumber)。

You probably have some other storage, where you keep things like the table cell title or subtitle. Store the boolean there. Use this to convert the bool to something you can put in an array or dictionary.

[NSNumber numberWithBool:YES]

For example, if you're using an NSArray of strings to store the titles, instead use an array of dictionaries. Each dictionary would have a "title" and (for example) "isActive" boolean (stored as an NSNumber).

红衣飘飘貌似仙 2025-01-14 10:31:27

NSMutableArray *tableData;

每个表格单元格都与 tableData 中的 NSMutableDictionary 存储关联,
您可以将 NSNumber(store bool) 设置为字典。

NSMutableArray *tableData;

every table cell associate with a NSMutableDictionary store in tableData,
you can set a NSNumber(store bool) to the Dictionary.

最美不过初阳 2025-01-14 10:31:27

您需要实现 UITableView

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{
 //create cell here
static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  return cell;
}
  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 的方法
    //通过使用indexpath.row,您可以访问用户单击的单元格。
    }

You need to implement method of UITableView

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{
 //create cell here
static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  return cell;
}
  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //by using indexpath.row you can access the cell on which user clicked.
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文