iphone,UITableView中的UITextField
Posted
技术标签:
【中文标题】iphone,UITableView中的UITextField【英文标题】:iphone, UITextField in UITableView 【发布时间】:2011-05-30 15:08:36 【问题描述】:我正在尝试在表格视图中添加文本字段。我想要除了最后一行之外的每一行都有一个标签和一个文本字段。我想在最后一行换一个开关。 问题是文本字段在其余行上重叠。我在 if(cell == nil) 中移动了我的文本字段代码,但这不起作用......这是我的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSString *MyIdentifier = @"mainMenuIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
[cell setSelectedBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"highlightstrip.png"]]];
if (tableView.tag == 1)
UILabel *lblName = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 90, 20)];
lblName.textAlignment = UITextAlignmentLeft;
lblName.font = [UIFont boldSystemFontOfSize:14];
lblName.backgroundColor = [UIColor clearColor];
lblName.tag = 31;
[cell.contentView addSubview:lblName];
[lblName release];
if (tableView.tag == 1)
[(UILabel *) [cell viewWithTag:31] setText:[tableElements objectAtIndex:indexPath.row]];
// check if the last row
if (indexPath.row == 10)
newsSwtich = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[newsSwtich addTarget:self action:@selector(switchToggled:) forControlEvents: UIControlEventTouchUpInside];
cell.accessoryView = newsSwtich;
else
UITextField *tempTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 10, 200, 20)];
tempTextField.delegate = self;
// tempTextField.placeholder = [tableElements objectAtIndex:indexPath.row];
tempTextField.font = [UIFont fontWithName:@"Arial" size:14];
tempTextField.textAlignment = UITextAlignmentLeft;
tempTextField.tag = indexPath.row;
tempTextField.autocorrectionType = UITextAutocorrectionTypeNo; // no auto correction support
tempTextField.keyboardType = UIKeyboardTypeDefault; // type of the keyboard
tempTextField.returnKeyType = UIReturnKeyDone; // type of the return key
tempTextField.clearButtonMode = UITextFieldViewModeWhileEditing; // has a clear 'x' button to the right
[cell.contentView addSubview:tempTextField];
[tempTextField release];
cell.accessoryView = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
当我向上和向下滚动时,文本字段重叠,我的意思是在我输入第一行的文本并向下滚动后,我可以看到文本字段也复制到最后一行。
【问题讨论】:
【参考方案1】:单元格重用导致文本字段重叠。每次重用单元格时,您都在添加一个文本字段或一个开关。这些都在堆积。在添加一个之前,您需要删除旧的子视图,它可以是开关或文本字段。
【讨论】:
在创建文本字段/开关时,为其分配一个标签。说 45。然后使用UIView *theView = [cell viewWithTag:45];
检索它。既然现在你已经看到了,那就做[theView removeFromSuperview];
。或者,如果它是一个文本字段并且您需要插入一个文本字段,您可以将其设置重置为您想要的。这样您就无需再次创建它了。【参考方案2】:
为什么你要使用两个 tableviews 只是这样做
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if(indexPath.row==[tableviewarray count])
//dont add label or textfield
else
// add label or textfield
【讨论】:
以上是关于iphone,UITableView中的UITextField的主要内容,如果未能解决你的问题,请参考以下文章
ipad 和 iPhone 中的 UITableView “separatorStyle”行为
在 UITableView 中的 iPhone 上异步加载 JSON
iphone,UITableView中的UITextField
将 managedobject 从 uitableview 传递到文本字段以在核心数据模型中进行编辑