我尝试用我选择的单元格中的文本用两个UIAlertView
打开一个textfield
。我使用以下代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(edit:)];
tapRecognizer.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tapRecognizer];
[tapRecognizer requireGestureRecognizerToFail:tapRecognizer];
CardTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"editCell" forIndexPath:indexPath];
NSString *cellFirstText = cell.cellFirstText.text;
NSString *cellSecondText = cell.cellSecondText.text;
[[NSUserDefaults standardUserDefaults] setObject:cellFirstText forKey:@"cellFirstToEdit"];
[[NSUserDefaults standardUserDefaults] setObject:cellSecondText forKey:@"cellSecondToEdit"];
}
-(void)edit: (UITapGestureRecognizer *)sender
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"save", nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[[alert textFieldAtIndex:1] setSecureTextEntry:NO];
[alert textFieldAtIndex:0].text = [[NSUserDefaults standardUserDefaults] objectForKey:@"cellFirstToEdit"];
[alert textFieldAtIndex:1].text = [[NSUserDefaults standardUserDefaults] objectForKey:@"cellSecondToEdit"];
alert.tag = 3;
[alert show];
}
但是问题是,即使我在该行上单击(一个),文本也会更改为默认文本。我希望你明白我的意思。
最佳答案
我认为您的代码是错误的,因为您是在用户每次点击某个单元格时(而不是在单元格加载时)都创建一个UITapGestureRecognizer,并且您还将其分配给视图而不是单元格。
所以试试这个:
移动此代码:
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(edit:)];
tapRecognizer.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tapRecognizer];
[tapRecognizer requireGestureRecognizerToFail:tapRecognizer];
初始化单元格后,将其添加到cellForRowAtIndexPath方法中,然后将
[self.view addGestureRecognizer:tapRecognizer];
更改为[cell addGestureRecognizer:tapRecognizer];
会导致您想将手势添加到单元格而不是视图中。我不知道这是否真的可以解决您的问题,但是我认为您的代码有两件事是错误的。从理论上讲,它应该起作用。
编辑:
另外,尝试将警报初始化上的消息设置为
nil
。另外,是否真的有必要使用NSUserDefaults存储这些变量?不能仅将它们存储在两个NSString属性中,还是出于某些原因而保留这些变量?