Не удается получить indexPath.row из массива (ошибка indexPath не объявлена)? - PullRequest
0 голосов
/ 24 ноября 2010

Я объявил NSArray в моем .h

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

Этот массив используется для загрузки данных plist с URL

, и это список, который я получил

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

и, если я выбрал ячейку

, появится всплывающее окно alertView с textField, оно может переименовать данные в 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" undeclared !

Почему?plist это массив, почему я не могу получить indexPath из массива ???

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

'indexPath' не является вашей переменной, так как она не объявлена. Вы должны сохранить indexPath в методе tableview didselectedrow в локальной переменной и использовать его в методе делегата alertView.

1 голос
/ 24 ноября 2010

indexPath доступен как часть методов TableView's Delegate и DataSource.У вас есть переменная с именем indexPath в качестве глобальной переменной или в качестве переменной-члена в вашем классе?

...