0

UITableViewcustom を使用して作成している がありますUITableViewCell。テーブルビューには、配列から入力されたデータが表示されます。現在、選択に基づいて2つの画像を使用してハイライト/ハイライト解除しています。[デフォルトでは、アプリケーションを開くと、最初の行が強調表示され、何も選択されていない状態で表示されます]。

UITableView最初に削除ボタンを押すと、ヘッダーに削除ボタンが1つ含まれるようになりました。

-(IBAction)delete{
    [myArray removeObjectAtIndex:0];
    [tableview reloadData];
}

テーブルビューが更新されると、すべての行に強調表示されていない画像が含まれます。3行目を選択してヘッダーの削除ボタンを押すと、削除するインデックス番号を取得するにはどうすればよいですか。

私は知ってdidSelectRowAtIndexPathいますが、選択したセルのインデックス番号を取得するために IBAction メソッドに入れる方法はありますか?

4

3 に答える 3

0

最新の選択の値を保持するivarまたはプロパティを作成するだけです。didSelectRowAtIndexPathメソッドに、次の行を追加します。

self.rowSelected = indexPath.row;

ここで、rowSelectedはプロパティです。次に、ボタンのIBActionで、そのプロパティにアクセスできます。

-(IBAction)delete{
    if (self.rowSelected != -1){
        [myArray removeObjectAtIndex:self.rowSelected];
        [tableview reloadData];
        self.rowSelected = -1;
}

viewDidLoadメソッドでは、起動時に最初の行を選択するため、そのプロパティの値を0に設定する必要があります。

于 2012-12-15T18:09:19.753 に答える
0

.h ファイルで、インスタンス変数を取得しますNSInteger selectedRow

あなたinitまたはviewDidLoadで、デフォルトの選択を設定...

selectedRow=0;

次にdidSelectRowAtIndexPath、次の操作を行います...

-(void)tableView:(UITableView)tableView didSelectRowAtIndexPath:(NSIndexPath)indexPath
{
    selectedRow=indexPath.row;
}

delete メソッドに小さな変更を加える

-(IBAction)delete{
    if(selectedRow!=-1)
    {
       [myArray removeObjectAtIndex:selcetedRow];
       [tableview reloadData];
       selectedRow=-1;     //-1 to mark that no row has been selected now
    }
}

そして、あなたは完了です!!

于 2012-12-15T18:14:46.387 に答える
0

を使用indexPathForSelectedRowして、現在選択されている行を判別できます。削除方法を次のように変更します。

-(IBAction)delete {
    NSIndexPath *selectedRow = [tableview indexPathForSelectedRow];
    if (selectedRow) {
        [myArray removeObjectAtIndex:selectedRow.row];
        [tableview reloadData];
    }
}

デフォルトでは最初の行を選択する必要があることに注意してください。

[tableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
于 2012-12-15T19:24:38.203 に答える