0

の選択した行を内部UITableViewから更新しようとしています。しかし、私は問題に直面しています。行を更新しようとするたびに、行の選択に関係なく、最初の行のみが更新されます。 私のコードは次のとおりです。UIAlertViewdidSelectRowAtIndexPath

 - (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 クラスで、もう 1 つのメソッドを作成します。-(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 に答える