我在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没有被调用。就像barcodeArray计数为空。
- (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
答案 0 :(得分:1)
我非常强烈地认为你的barcodeArray
只有你方法中的局部范围
if / else语句。我认为您需要保留barcodeArray
,因为它在其他方法中为空。
您可以在NSLog(@"%d", [barcodeArray count]);
委托方法中执行numberOfRowsInSection
并显示打印内容吗?这将有助于确认是否存在分配和保留阵列的问题。如果那是问题...那么在你的头文件中,你会写,
@property (strong, nonatomic) NSMutableArray* barcodeArray;
在您的实施文件中,您可以编写`@synthesize barcodeArray = _barcodeArray;
然后,你会这样做,self.barcodeArray = [NSMutableArray alloc] init];
在您使用barcodeArray
的任何地方,在它之前添加自我。通过保留对象(头文件中的属性... retain = strong),您现在可以在整个班级中进行访问。在cellForRowAtIndexPath
和numberOfRows
方法中,它不应该为空。
编辑:
在你的代码中,你正在做
[barcodeArray addObject:barcode];
这应该是
[self.barcodeArray addObject:barcode];
如果您有barcodeArray
,则代码中没有任何地方 - 您应该只有self.barcodeArray
。
答案 1 :(得分:0)
条形码为零。在条形码中设置一些东西,即; barCode = @"11225544";
然后尝试。