我正在尝试更新UITableView
内UIAlertView
的所选didSelectRowAtIndexPath
行。但我遇到了一个问题。每次我尝试更新任何一行时,它只会更新第一行而不管行的选择
我的代码是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *selectedrow = nil;
if (searching) {
slCell=indexPath.row;
selectedrow = [copyListOfItems objectAtIndex:indexPath.row];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter the Number of Quantity" message:@""
delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert addTextFieldWithValue:@"" label:@"Number of Item"];
textfieldQty = [alert textFieldAtIndex:0];
textfieldQty.keyboardType = UIKeyboardTypeNumberPad;
textfieldQty.keyboardAppearance = UIKeyboardAppearanceAlert;
textfieldQty.autocorrectionType = UITextAutocorrectionTypeNo;
[alert show];
[alert release];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter the Number of Quantity" message:@""
delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert addTextFieldWithValue:@"" label:@"Number of Item"];
textfieldQty = [alert textFieldAtIndex:0];
textfieldQty.keyboardType = UIKeyboardTypeNumberPad;
textfieldQty.keyboardAppearance = UIKeyboardAppearanceAlert;
textfieldQty.autocorrectionType = UITextAutocorrectionTypeNo;
[alert show];
[alert release];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *b=nil;
if (buttonIndex == 0) {
if (searching) {
if([textfieldQty.text isEqualToString:b]) {
UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"Enter plz" message:@""
delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK"];
[alert2 show];
[alert2 release];
}
NSString *newqty = [[NSString alloc] initWithFormat:@"%@",textfieldQty.text];
DMSAppDelegate *d= (DMSAppDelegate *)[[UIApplication sharedApplication] delegate];
[d->tableDataQt replaceObjectAtIndex:slCell withObject:(id)newqty];
NSLog(@"tb%@",copyListOfQty);
}
else {
NSString *newqty = [[NSString alloc] initWithFormat:@"%@",textfieldQty.text];
DMSAppDelegate *d= (DMSAppDelegate *)[[UIApplication sharedApplication] delegate];
[d->tableDataQt replaceObjectAtIndex:slCell withObject:(id)newqty];
[self.tablevieww reloadData];
}
}
}
答案 0 :(得分:1)
请按照以下步骤实现您的目标。
UIAlertview
方法中创建(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
时,将alerview的标记设置为indexpath的行。 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
中,您尝试访问alertView的标记并将该标记传递给方法调用[d->tableDataQt replaceObjectAtIndex:[alertView tag] withObject:(id)newqty];
-(void)replaceObjectAtIndex:(NSInteger>inIndex withObject:(id)inObject
UITableViewCell
UITableView
对象访问UITableViewCell *myCell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:inIndex inSection:0];
UITableViewCell
的对象并更改其值并重新加载表。我希望这会对你有所帮助。如果能解决您的问题,请不要忘记使用正确的标记。 :)
感谢。