1

ビューTableViewで行われた選択に従って、のコンテンツを入力したい。PickerView私がこれまでに持っているコードは次のとおりです。

- (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結果を単語と比較する方法に誤りがありますか?

4

2 に答える 2

2

あなたがした後

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

手動でテーブルビューを更新する必要があります..その後、

[_yourTableView reloadData];

また、次のように配列を初期化します。

boatsForOwner = [NSMutableArray new];
于 2013-01-10T19:05:21.160 に答える
0

私は最初にallocinit配列「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

于 2013-01-10T19:05:14.373 に答える