ios - 带有来自 NSMutableArray 的数据的 UITableView 返回空

标签 ios objective-c uitableview uipickerview

我想根据在 PickerView View 中所做的选择来填充 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 委托(delegate)

- (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 数据源和委托(delegate)

- (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 结果与单词进行比较方面是否存在错误?

最佳答案

之后

[self.boatsForOwner addObject:@"Titanic"];

您将需要手动刷新您的 tableview.. 所以在那之后做

[_yourTableView reloadData];

我也会像这样初始化你的数组:

boatsForOwner = [NSMutableArray new];

关于ios - 带有来自 NSMutableArray 的数据的 UITableView 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265220/

相关文章:

objective-c - 错误 : unrecognized selector sent to instance

uitableview - 有没有办法改变 UICollectionViews 的动画速度?

ios - TableView 页脚不随内容滚动

ios - swift 从另一个类访问类类型变量

ios - 本地原生 iOS 时间黑客证明后台倒数计时器

ios - 在什么情况下 horizo​​ntalAccuracy 为负&零以及如何模拟

iphone - 在 iOS 应用程序中显示带有 HTML 标签的文本的最佳方式?

ios - 使用 CoreData 时如何与 Watch OS 2 共享数据以显示在 WKInterfaceTable 中

ios - 如何在 iOS 中播放来自没有文件扩展名的 URL 的视频?

Swift 3 UITableView 部分显示在列表后面