gpt4 book ai didi

iOS UITableViewCells 行被回收且标签不起作用

转载 作者:行者123 更新时间:2023-11-28 20:32:33 25 4
gpt4 key购买 nike

我想寻求一些帮助来为单元格中的按钮设置标签。这是一个问题,带有指向我之前发布的链接:iOS Using NSDictionary to load data into section and rows

但是,虽然我现在可以动态传递数据,但我在每一行上的续订按钮似乎无法获取数据,并且只会在选择部分中的任何行时检测到每个部分的相同书名.

根据我目前所读的内容,这是因为按钮正在被回收,因此无法检测到正确选择了哪本书。我试过设置标签:

cell.renewButton.tag = indexPath.row;

我的代码现在的样子:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentifier = @"Cell";
UserCustomCell *cell = (UserCustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);

if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"UserCustomCell" owner:self options:nil];
cell = userCustomCell;
self.userCustomCell = nil;
cell.renewButton.tag = indexPath.row;
}

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);
cell.renewButton.frame = CGRectMake(600, 14, 68, 24);
}
[cell.renewButton useBlackActionSheetStyle];

//########## 编辑从这里开始 dataSource = [[NSMutableDictionary alloc] init];//这需要是一个 ivar

for (NSDictionary *rawItem in myArray) {
NSString *date = [rawItem objectForKey:@"date"]; // Store in the dictionary using the data as the key

NSMutableArray *section = [dataSource objectForKey:date]; // Grab the section that corresponds to the date

if (!section) { // If there is no section then create one and add it to the dataSource
section = [[NSMutableArray alloc] init];
[dataSource setObject:section forKey:date];
}

[section addObject:rawItem]; // add your object
}
self.dataSource = dataSource;
//NSLog(@"Data Source Dictionary: %@", dataSource);

NSArray *sections =[[dataSource allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSString *sectionTitle = [sections objectAtIndex:indexPath.section];

NSArray *items = [dataSource objectForKey:sectionTitle];

NSDictionary *dict = [items objectAtIndex:indexPath.row];
cell.bookTitle.text = [dict objectForKey:@"name"];
cell.detail.text = [NSString stringWithFormat:@"Due Date: %@ Due Time: %@",
[dict objectForKey:@"date"], [dict objectForKey:@"time"]];


cell.renewButton.tag = indexPath.row;
return cell;

但它根本不起作用。如果有任何建议,我们将不胜感激 :) 谢谢!

P.S:我的 xcode 副本没有更新,只更新到版本 4。看到有人提到在 DataModel 中存储标签状态,但它仅在较新版本中可用。 :)

最佳答案

您不能使用按钮标签,因为它们与回收它们的单元格相同。相反,使用 indexPath 来确定您在哪一行并直接使用它。无需通过按钮标签。

关于iOS UITableViewCells 行被回收且标签不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11700121/

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