У меня есть табличное представление, в котором есть 3 строки, каждая строка имеет метку и текстовое поле.Код выглядит следующим образом:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *array = [[NSArray alloc] initWithObjects:@"Mortgage Balance", @"Interest Rate", @"Term (yrs)", nil];
self.fieldLabels = array;
[array release];
static NSString *CellIdentifier = @"Cell";
NSUInteger row = [indexPath row];
UILabel *label;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 125, 25)];
label.textAlignment = UITextAlignmentRight;
label.tag = kLabelTag;
label.font = [UIFont boldSystemFontOfSize:18];
[cell.contentView addSubview:label];
[label release];
UITextField *textField = [[UITextField alloc] initWithFrame:
CGRectMake(170, 12, 250, 25)];
textField.clearsOnBeginEditing = NO;
[textField setDelegate:self];
[textField addTarget:self
action:@selector(textFieldDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[cell.contentView addSubview:textField];
}
label = (UILabel *)[cell viewWithTag:kLabelTag];
UITextField *textField = nil;
for (UIView *oneView in cell.contentView.subviews)
{
if ([oneView isMemberOfClass:[UITextField class]])
textField = (UITextField *)oneView;
}
label.text = [fieldLabels objectAtIndex:row];
label.font = [UIFont boldSystemFontOfSize:14];
textField.tag = row;
switch (row) {
case 0:
self.balance = textField;
self.balance.clearsOnBeginEditing = NO;
self.balance.text = @"test";
[balance addTarget:self
action:@selector(balanceDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[cell.contentView addSubview:balance];
break;
case 1:
self.interestrate = textField;
self.interestrate.clearsOnBeginEditing = NO;
self.interestrate.text = @"5.5";
[interestrate addTarget:self
action:@selector(interestrateDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[cell.contentView addSubview:interestrate];
break;
case 2:
self.term = textField;
self.term.clearsOnBeginEditing = NO;
self.term.text = @"30";
self.term.delegate = self;
[term addTarget:self
action:@selector(termDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[cell.contentView addSubview:balance];
break;
}
// Configure the cell.
return cell;
}
- (void)interestrateDone:(id)sender {
mortgage_interest = [interestrate.text doubleValue];
}
- (void)balanceDone:(id)sender {
mortgage_balance = [balance.text doubleValue];
}
- (void)termDone:(id)sender {
mortgage_term = [term.text intValue];
}
Когда я изменяю это на 2 строки, отображаются 1-я и 2-я строки, и я могу вводить значения в каждом из текстовых полей.Когда я изменяю это на 3 строки, я не могу выбрать текстовое поле 1-й строки.Фактически, я добавил текст для загрузки в каждое поле, и во второй строке есть правильный текст, но в 3-й строке текст 1-й строки наложен на текст 3-й строки.
Кто-нибудь объяснит, в чем моя проблема?Спасибо