0

.hでNSArrayを宣言しました

@interface DevicePreferencesController : UITableViewController < UIAlertViewDelegate >{
    NSArray *plist;
    UITextField *deviceName;
}

この配列は、URLからplistデータをロードするために使用されます

これは私が得たplistです

plist:(
        {
        category = 11;
        id = 1;
        name = light1;
    },
        {
        category = 11;
        id = 5;
        name = window;
    },
        {
        category = 12;
        id = 2;
        name = dimmer2;
    },
        {
        category = 23;
        id = 3;
        name = win;
    }
)

tableViewで表示します

セルを選択した場合

textFieldを含むalertViewがポップアップ表示され、plist内のデータの名前を変更できます

そしてこれがalertViewのボタンアクションです

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if ([alertView tag]==1) {
        if (buttonIndex == 1){
            [request setPostValue:[[self.plist objectAtIndex:indexPath.row] valueForKey:@"id"]  forKey:@"id"];
            [request setPostValue:deviceName.text  forKey:@"name"];
            [request startSynchronous];
        }
    }
}

しかし、ここで「indexPath」が宣言されていないというエラーが発生しました。

なんで ?plistは配列ですが、配列からindexPathを取得できないのはなぜですか?

4

2 に答える 2

2

'indexPath'は変数ではないため、宣言されていないためです。indexPathをtableviewdidselectedrowメソッドのローカル変数に格納し、alertViewデリゲートメソッドで使用する必要があります。

于 2010-11-24T10:11:28.963 に答える
1

indexPathは、TableViewのDelegateメソッドとDataSourceメソッドの一部として使用できます。クラスにグローバル変数またはメンバー変数としてindexPathという名前の変数がありますか?

于 2010-11-24T10:13:27.783 に答える