2010-11-24 1 views
0

は私が配列からindexPath.rowを取得できません(エラーindexPath宣言されていません)?

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

この配列は、URL

からplistのデータをロードするために使用され、私の.hにNSArrayのを宣言し、これは私がでそれを示して、私は

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; 
    } 
) 

を得たplistのですテーブルビュー

これは、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を取得できないのはなぜですか?

答えて

2

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

+0

申し訳ありませんが、私は何を意味するのか知っていますが、いくつかのサンプルコードを提供できますか?または、indexPathを取得するためにグローバル変数が必要ですか? –

+0

はい、indexPath値を操作する必要がある場合は、グローバル変数に格納する必要があります。 – MetaImi

1

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

+0

いいえ...クラス内にグローバル変数を宣言しませんでした –

+0

NSIndexPathのグローバル変数を宣言します。そして、あなたの - tableView:didSelectRowAtIndexPath:関数で、この関数を通して利用可能なグローバル変数を割り当て、それを使用します。 – Krishnan

+0

あなたの回答に投票してください –

関連する問題