我在我的.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 ???
答案 0 :(得分:2)
'indexPath'不是你的变量,因为它是未声明的。您应该将indexPath存储在tableview didselectedrow方法中,并将其存储在局部变量中,并在alertView委托方法中使用它。
答案 1 :(得分:1)
indexPath作为TableView的Delegate和DataSource方法的一部分提供。你有一个名为indexPath的变量作为全局变量或类中的memeber变量吗?