带有 NSMutableArray 数据的 UITableView 返回空
Posted
技术标签:
【中文标题】带有 NSMutableArray 数据的 UITableView 返回空【英文标题】:UITableView with data from NSMutableArray returns empty 【发布时间】:2013-01-10 18:53:48 【问题描述】:我想根据PickerView
视图中的选择填充TableView
的内容。我到目前为止的代码是:
- (IBAction)findOwnerButtonPressed:(id)sender
findShip.hidden = NO;
shipOwners.hidden = NO;
boatsTableView.hidden = YES;
boatOwners = [NSArray arrayWithObjects:@"Owner1",@"Owner2",@"Owner3", nil];
- (IBAction)findShipButtonPressed:(id)sender
shipOwners.hidden = YES;
findShip.hidden = YES;
boatsTableView.hidden = NO;
PickerView 数据源
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
return 1;
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
return [boatOwners count];
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
return [boatOwners objectAtIndex:row];
PickerView 委托
- (void)pickerView:(UIPickerView *)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
NSString *boatsFromOwner = [boatOwners objectAtIndex:[shipOwners selectedRowInComponent:0]];
boatsForOwner = [NSMutableArray arrayWithObjects:nil];
if ([boatsFromOwner isEqualToString:@"Owner1"])
[self.boatsForOwner addObject:@"Titanic"];
NSLog(@"%@",boatsFromOwner);
TableView 数据源和委托
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [boatsForOwner count];
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
cell.textLabel.text = [boatsForOwner objectAtIndex:indexPath.row];
return cell;
这应该是从PickerWheel
退回船主公司,并把他们的船给我。此代码在表中不返回任何内容。 PickerWheel
在我选择它时会记录“Owner1”。
我在如何将对象添加到数组或如何初始化表或如何将PickerWheel
结果与单词进行比较时是否存在错误?
【问题讨论】:
你有没有实例化过boatsForOwner? 是的,在 .h 中并合成 不,这不是实例化——实例化意味着你接受的答案中的 alloc init。 哦好吧对不起我不知道 【参考方案1】:做完之后
[self.boatsForOwner addObject:@"Titanic"];
您将需要手动刷新您的 tableview.. 所以之后这样做
[_yourTableView reloadData];
我也会像这样初始化你的数组:
boatsForOwner = [NSMutableArray new];
【讨论】:
在.h文件中合成后还需要这样做吗? (初始化) 你说的是你的 UITableView 属性吗? 哦,是的,您仍然需要像我一样在代码中初始化它。如果您不这样做,它不会给您错误或崩溃,但实际上不会将任何内容添加到您的数组中 奥凯,谢谢。你们两个都帮了我,所以我会支持你的并接受其他人,因为你的代表最高:)【参考方案2】:我认为首先alloc
& init
数组“boatsForOwner”
将您的选择器didSelectRow
方法替换为
-(void)pickerView:(UIPickerView *)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
NSString *boatsFromOwner = [boatOwners objectAtIndex:[shipOwners selectedRowInComponent:0]];
if(boatsForOwner)
[boatsForOwner release];
boatsForOwner = nil;
boatsForOwner = [NSMutableArray alloc] init];
if ([boatsFromOwner isEqualToString:@"Owner1"])
[self.boatsForOwner addObject:@"Titanic"];
NSLog(@"%@",boatsFromOwner);
[tableObject reloadData];
和release
boatsForOwner
当你dealloc
。
【讨论】:
以上是关于带有 NSMutableArray 数据的 UITableView 返回空的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将带有 NSKeyedArchiver 的 NSMutableArray 保存到核心数据中?
带有 UITextfield 的 UItableView 到 NSMutableArray CRASH on Record 更新单击
JSON到带有AFNetworking的NSMutableArray [重复]
如何使用 NSMutableArray 作为 UITableView 的数据源