gpt4 book ai didi

ios - numberOfRowsInSection 和 cellForRowAtIndexPath 的 2 个问题

转载 作者:行者123 更新时间:2023-11-29 04:11:17 24 4
gpt4 key购买 nike

我在viewcontrolller.m中设置了一个NSMutableArray

barcodeArray = [[NSMutableArray alloc] init];

在viewcontroller.h中像这样:

@interface SecondViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

NSString *string;
NSString *barcode;
NSArray *array;
NSMutableArray *barcodeArray;

}

然后我添加一个像这样的对象:

if ([barcodeArray indexOfObject:barcode] != NSNotFound) {
NSLog(@"%@",barcode);
NSLog(@"object zit er al in");

}
else {
[barcodeArray addObject:barcode];
[_tableView reloadData];
NSLog(@"%@",barcodeArray);
NSLog(@"object zit er nog niet in");

}

当我设置 numberOfRowsInSection 返回 [barcodeArray count] 时;函数 cellForRowAtIndexPath 未被调用。就像条形码数组计数为空一样。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [barcodeArray count];

}

当我设置 numberofRowsinSection 返回 1 时;只是为了测试..我得到一个带有(null)的单元格:

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Set up the cell...

cell.textLabel.text = [NSString stringWithFormat:@"%@",[barcodeArray objectAtIndex:indexPath.row]];
NSLog(@"%@", cell.textLabel.text);


return cell;
}

这是我的日志:

2013-01-17 07:57:04.139 Scanner[21865:c07] (
123456
) **// NSMutableArray when i add the barcode**
2013-01-17 07:57:04.140 Scanner[21865:c07] object zit er nog niet in
2013-01-17 07:57:05.485 Scanner[21865:c07] viewdidload
2013-01-17 07:57:05.488 Scanner[21865:c07] aangeroepen
2013-01-17 07:57:05.489 Scanner[21865:c07] (null) **// NSMutableArray in cell.textLabel.text**

编辑:

    cell.textLabel.text = [NSString stringWithFormat:@"%@",[barcodeArray objectAtIndex:indexPath.row]];
NSLog(@"celltext:%@", cell.textLabel.text);
NSLog(@"barcodearray%@", [barcodeArray objectAtIndex:indexPath.row]);
NSLog(@"objectatindex:0:%@", [barcodeArray objectAtIndex:0]);
NSLog(@"indexpath.row:%d", indexPath.row);

Log:



2013-01-17 08:27:28.838 Scanner[21978:c07] celltext:(null)
2013-01-17 08:27:28.839 Scanner[21978:c07] barcodearray(null)
2013-01-17 08:27:28.839 Scanner[21978:c07] objectatindex:0:(null)
2013-01-17 08:27:28.839 Scanner[21978:c07] indexpath.row:0

最佳答案

我有一种非常强烈的感觉,您的 barcodeArray 在您的方法中仅具有本地范围if/else 语句。我认为您需要保留 barcodeArray,因为它在您的其他方法中为 null。

您可以在 numberOfRowsInSection 委托(delegate)方法中执行 NSLog(@"%d", [barcodeArray count]); 并显示打印内容吗?这将有助于确认分配和保留数组的方式是否存在问题。如果这就是问题所在......那么在你的头文件中,你会写,

@property (strong, nonatomic) NSMutableArray*barcodeArray; 在你的实现文件中,你可以写`@synthesizebarcodeArray = _barcodeArray;

然后,你会这样做,self.barcodeArray = [NSMutableArray alloc] init];

在任何使用 barcodeArray 的地方,请在其前面添加 self。通过保留该对象(使用头文件中的属性...retain = Strong),您现在可以在整个类中访问它。在您的 cellForRowAtIndexPathnumberOfRows 方法中,它不应该再为 null。

编辑:

在你的代码中,你正在做

[barcodeArray addObject:barcode];

这应该是

[self.barcodeArray addObject:barcode];

代码中的任何地方都不应该有 barcodeArray - 你应该只具有 self.barcodeArray

关于ios - numberOfRowsInSection 和 cellForRowAtIndexPath 的 2 个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373816/

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