0

ボタンから ActionSheet に変数を送信しようとしています。

tag プロパティは別の用途に使用されているため使用できません。

インスタンス変数として myIndexRow を宣言しました。

NSInteger myIndexRow = indexPath.row;
    [deleteButton addTarget:self action:@selector(showDeleteSheet:) forControlEvents:UIControlEventTouchUpInside];

    deleteButton.myIndexRow = myIndexRow;

しかし、「メンバー 'myRow' の要求は、構造体でも共用体でもないものです」というメッセージが表示されます

ここで私が見逃していることは明らかです。

4

1 に答える 1

1

SOに関する自分の質問に答えるとは思いもしませんでしたが、次のようになります。

スーパービューのスーパービューにアクセスし、indexPath セクションと行のプロパティをクエリすることでうまくいきました。

ボタンのターゲットで:

-(void)showDeleteSheet:(id)sender {

NSIndexPath *indexPath = [table indexPathForCell:(UITableViewCell *)[[sender superview] superview]];

    NSInteger currentSection = indexPath.section;
    NSInteger currentIndexRow = indexPath.row;

    //form the actionSheet
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delete this item?" 
                                                         delegate:self 
                                                cancelButtonTitle:@"Cancel" 
                                           destructiveButtonTitle:@"Delete" 
                                                otherButtonTitles:nil];                         
    actionSheet.tag = currentIndexRow;
    actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
    [actionSheet showInView:self.view];
    [actionSheet release];
}

次に、actionSheet の clickedButtonAtIndex メソッドで、必要な行を取得します。

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

     if (buttonIndex == 0)
        { ... doSomethingWith: actionSheet.tag }
     else
        { ... user pressed cancel }
}

答えの一部は別の投稿にあり、残りはここにあります

于 2010-04-20T01:42:46.923 に答える