views:

117

answers:

1

Hi all,

I am making an coredata application in which I was instructed to make a tableview (filling form) with textfield in each row which I did successfully. Then I made a toolbar with previous and next button and add to textField's inputAccsoryView for navigating between the textfields of each cell. One textfield per row . I am also able to do the magic with previous and next button methods . Now the problem :

Suppose I have 3 sections . In first section 4 rows . In second section 6 rows and in the last section 1 row . Now when I start from the 1st row and presses next till the 11th row it is working properly but then I press next nothing happens as the first row is dequeued I get "nil" for it . The code I am using :

configuring the cell

if (cell == nil) {
    NSLog(@"tag inside:%i",tag);

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                   reuseIdentifier:identifier] autorelease];


    UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(120, 10, 170, 25)];

    theTextField.textAlignment = UITextAlignmentRight;  

    theTextField.delegate = self;

    theTextField.tag = tag;
    theTextField.inputAccessoryView = [self configureTheToolBar];
    [theTextField setKeyboardAppearance:UIKeyboardAppearanceAlert];


    [cell.contentView addSubview:theTextField];
    [theTextField release];

}

cell.textLabel.text = rowLabel;
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:tag];
textField.text = rowValue

I am providing tags for textfield like 601 ,602 etc .

Then getting the currentTextField tag

- (void)textFieldDidBeginEditing:(UITextField *)textField{

    currentTextField = textField.tag;
}

then the next method

if(currentTextField == 611){
        currentTextField = 601;     
    } else{
        currentTextField = currentTextField + 1;
    }
    NSLog(@"current text fiedld = %i",currentTextField);

    NSLog(@"text ; %@",[self cellForTag:currentTextField].textLabel.text);

        UITextField *firstResponderField = (UITextField *) [[self cellForTag:currentTextField].contentView viewWithTag:currentTextField];

        [firstResponderField becomeFirstResponder];

and the cellForTag method :

-(UITableViewCell *)cellForTag:(NSInteger)tag{




     UITableViewCell *cell;
            switch (tag) {
                case 601:{


                    NSUInteger onlyRow[] = {0, 0}; 
                    NSIndexPath *onlyRowPath = [NSIndexPath indexPathWithIndexes:onlyRow length:2]; 
                    //[self.tableView scrollToRowAtIndexPath:onlyRowPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

                    cell = [self.tableView cellForRowAtIndexPath:onlyRowPath];

                    break;
}
    return cell

this code is working partially as once off screen cells get out of memory I can't reach textfield in that cell and next button stops working till the currentTextfield value reaches to any visiblerow . What could be the solution . my stack is over flowed. :)

A: 

Ok this thread does the trick but I don't know how . can anyone explain me how ?

hib