1

私は異なる行/セルを持ち、各セルに追加ボタンがあるTableViewを持っているプロジェクトをやっています。私がする必要があるのは、追加ボタンをクリックすると、ボタンをクリックした行の下に新しい行が追加されます。つまり、行で選択したボタンの次の行にセルを追加する必要があります。また、ユーザーが入力することもできます新しい行のテキスト。これを行う方法を教えてください。私はiPhone開発の初心者です。私は非常に感謝します....

これは、新しいセルを追加するアクションを実行したいクリックボタン機能です。

- (IBAction)AddButtonAction:(id)sender
{
    [_choices insertObject:@"avav" atIndex:[_choices count]];
    [self.tableView reloadData];
    NSLog(@"here");

}
4

3 に答える 3

2

このデリゲート メソッドを使用して、選択した行の下に新しい行を追加します。カスタムセルを使用してテキストフィールドを作成します...

     rowCount ++;//Here rowcount refers the no. of rows in the table. 
     selectedIndexPath = indexPath;//Assign the selected indexpath for creating custom cell on it. 
    [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom];//Indexpath refers the currently selected/targeted cell. 

cellforRowAtIndexPath では、このように使用します

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if((selectedIndexPath) && (indexPath.row == selectedIndexPath.row) && (indexPath.section == selectedIndexPath.section))
    {
        static NSString *cellIdentifier=@"cell";
        NewCell *cell = (NewCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        if (cell == nil)
        {
            NSString *customeCellName = [NSString stringWithFormat:@"%@",[NewCell class]];

            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:customeCellName owner:self options:nil];

            for (id currentObject in topLevelObjects)
            {
                if ([currentObject isKindOfClass:[UITableViewCell class]])
                {
                    cell =  (NewCell *) currentObject;
                    break;
                }
            }
        }
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];


        return cell;
    }
    else
    {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%d",indexPath.row];

    // Configure the cell...

    return cell;
    }
}

出力はこのようになります ここに画像の説明を入力

要件に従ってカスタマイズする必要があります。

于 2013-03-13T13:05:14.633 に答える
0

ボタンをaddSubviewメソッドでセルに追加する場合は、次のコードで indexPath を取得できます。

- (IBAction)AddButtonAction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    UITableViewCell *cell = (UITableViewCell *)[button superview];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

    // Adding methods comes here...
}

いくつかのaddSubviewレベルを使用している場合は、同じsuperviewメソッドを逆に使用して UITableViewCell レベルにアクセスする必要があります。カスタム セルを使用する場合は、上記のコードでカスタム セルのクラス名を UITableViewCell に置き換えます。

セルの追加については、WWDC 2011 ビデオの「UITableView の変更、ヒントとコツ」ビデオをご覧ください。メソッドのような他の行/セクションの間に新しい行/セクションを挿入、削除、および再ロードするための便利で便利な方法をいくつか示しますinsertRowsAtIndexPaths:withRowAnimation:。またはApple ドキュメントを参照してください。

于 2013-04-10T12:20:26.287 に答える
0

すべてのセルにテキストフィールドがあると思います。AddButtonAction 関数で、行のインデックスを保存します。セルの作成中に、選択したセルのテキストフィールドを最初のレスポンダーにします。ユーザーがデータを入力したら、それを配列に保存し、再度リロードします。selectedIndex を適切に追跡するだけです。これは役に立ちます。

于 2013-03-13T13:07:26.070 に答える