0

tableViewController の動的セルの内容を選択 (および配列に保存) するにはどうすればよいですか? 私のtableViewは、実行時に表示するセクションの数を設定できる、常に存在する1つのセクションで構成されています。設定はステッパーによって制御されます。ステッパーの「+」ボタンをクリックすると、3 行のセクションがテーブルに追加されます。各行は textField で構成されています! 実行時に 1000 個のセクションが存在する可能性があることを考えると、これらの行の内容を選択して配列に保存するにはどうすればよいでしょうか? ここにコード:

- (void)viewDidLoad{
[super viewDidLoad];
self.arrDetails = [NSArray arrayWithObjects:@"Name",@"Surname",@"Fix",@"Role", nil];}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1 + self.numberOfComponents;
}

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

    if (section == 0) {
        return 1;
    }


    else{
        return [self.arrDetails count];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) {
        NSString *CellIdentifier = @"cellStepper";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        UILabel *stepperLabel = (UILabel *)[cell viewWithTag:1];
        stepperLabel.text = [NSString stringWithFormat:@"%i",self.numberOfComponents];
        UIStepper *stepper = (UIStepper *)[cell viewWithTag:2];
        stepper.minimumValue = 0;
        stepper.maximumValue = 20;
        stepper.stepValue = 1;
        //stepper.wraps = YES;
        stepper.autorepeat = YES;
        stepper.continuous = YES;
        return cell;
    }
    NSString *CellIdentifier = @"cellDetail";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    UITextField *cellLabelComponent = (UITextField *)[cell viewWithTag:3];
    cellLabelComponent.placeholder = self.arrDetails[indexPath.row];
    return cell;
}


- (IBAction)stepperClik:(UIStepper *)stepper{
    if (stepper.value == 0 && self.numberOfComponents == 0) {
        if (stepper.value > self.numberOfComponents) {
            self.numberOfComponents += 1;
            [self.tableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];
        }
        else{
            return;
        }
    }
    if (stepper.value > self.numberOfComponents) {
        self.numberOfComponents += 1;
        [self.tableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
    else{
        self.numberOfComponents -= 1;
        [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

@end
4

1 に答える 1

0

セクション内のセルの数は決まっており、 でセクションの数にアクセスself.numberOfComponentsできるため、セルごとに indexPath を作成できます。

NSMutableArray *savedTexts = [NSMutableArray alloc] init];
for (int i = 0; i < self.numberOfComponents; i < 0)
{
    NSMutableArray *component = [NSMutableArray alloc] init];
    for (int j = 0; j < [self.arrDetails count]; j < 0)
    {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i+1];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
        [component addObject: [cell viewWithTag:3].text];
    }
    [savedTexts addObject: component];
}

これにより、コンポーネントの配列が得られ、それぞれに詳細が含まれます。

于 2013-08-06T06:55:39.567 に答える