0

我正在尝试UITableViewUIAlertView内部更新选定的行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];
    }

}   
}
4

1 回答 1

1

请按照以下步骤来实现您想要的。

  1. UIAlertview在方法中创建时(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath,将alerview 的标签设置为indexpath 的行。
  2. 在委托方法 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex中,您尝试访问 alertView 的标签并将该标签传递给方法调用[d->tableDataQt replaceObjectAtIndex:[alertView tag] withObject:(id)newqty];
  3. 在 AppDelegate 类中,您再创建一个名为-(void)replaceObjectAtIndex:(NSInteger>inIndex withObject:(id)inObject
  4. 在上面新创建的方法中,尝试通过方法调用UITableViewCell从对象访问UITableViewUITableViewCell *myCell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:inIndex inSection:0];
  5. 这样,您将获得对象UITableViewCell并更改其值并重新加载表。

我希望这能帮到您。如果这解决了您的问题,请不要忘记正确标记。:)

谢谢。

于 2012-08-27T11:15:55.243 回答