我需要创建应用程序内使用的自定义设置视图。该应用程序是一个模型,所以它实际上已经有一个,它使用UITableViewCellStyleValue1,但没有任何可编辑的。所以基本上我想要的是同样的事情,但是可编辑的detailTextLabel(右侧的标签)是什么,最好的方法是什么?如何创建自定义设置视图/使单元格标签可编辑
0
A
回答
2
您可以继续使用UITableViewCellStyleValue1。您需要为每个希望编辑的单元格创建UITextField实例。然后,将每个UITextField分配给适当的单元的accessoryView属性。
您还可以通过该标签相匹配的文本的颜色:
yourTextField.textColor = cell.detailTextLabel.textColor;
您可能需要与UITextField实例的属性框摆弄,以获得对准恰到好处。
0
好了,这里是我现在,不显示文本字段代码,我不知道为什么...
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
static NSString* reuseIdentifier = @"SettingsCell";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if (!cell)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier] autorelease];
[cell setBackgroundColor:[UIColor baeDarkGrayColor]];
UILabel* cellLabel = [cell textLabel];
[cellLabel setTextColor:[UIColor whiteColor]];
[cellLabel setBackgroundColor:[UIColor clearColor]];
[cell setUserInteractionEnabled:YES];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
}
// Populate cell with corresponding data.
NSDictionary* tableSection = [_tableData objectAtIndex:indexPath.section];
// Set the label
UILabel* textLabel = [cell textLabel];
NSString* labelString = [[tableSection objectForKey:@"itemTitles"] objectAtIndex:indexPath.row];
[textLabel setText:labelString];
// Set the detail string
// UILabel* detailLabel = [cell detailTextLabel];
// NSString* detailLabelString = [[tableSection objectForKey:@"itemDetailStrings"] objectAtIndex:indexPath.row];
// [detailLabel setText:detailLabelString];
// Set the accessory view
BAESettingsTableCellAccessoryType accessoryType = [[[tableSection objectForKey:@"itemAccessories"] objectAtIndex:indexPath.row] integerValue];
switch (accessoryType)
{
case BAESettingsTableCellAccessoryDisclosureIndicator:
{
UIImageView* disclosureView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AccessoryDisclosure.png"]];
[cell setAccessoryView:disclosureView];
[disclosureView release];
break;
}
case BAESettingsTableCellAccessoryOnOffSwitch:
{
UISwitch* onOffSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
[onOffSwitch setOn:YES];
[cell setAccessoryView:onOffSwitch];
[onOffSwitch release];
break;
}
case BAESettingsTableCellAccessoryNone:
// default:
// break;
{
UITextField* textField = [[UITextField alloc] init];
NSString* detailLabelString = [[tableSection objectForKey:@"itemDetailStrings"] objectAtIndex:indexPath.row];
textField.text = detailLabelString;
textField.textColor = [UIColor whiteColor];
[cell setAccessoryView:textField];
[textField release];
break;
}
}
return cell;
}
0
您的文本字段是不是因为你显示出来从未设置文本字段的框架。您需要设置正宽度和高度的框架。我会使用的高度是43(行高 - 1px灰线缓冲区)。
0
啊哈!好,我知道了!现在我想要做的是通过查看单元格中剩下的标题标签的宽度来动态定义详细文本字段的宽度。大多数时候我在模拟器中运行这个标题标签大小为0,但偶尔我会得到一个结果。这对我来说没有任何意义,我想也许这是因为细胞正在被重复使用?你们有什么想法吗?
我加了这段代码为textLabel设置后:
CGSize textLabelSize = [textLabel.text sizeWithFont:textLabel.font];
然后在case块一开始我做的事:
CGRect cellFrame = [cell frame];
float detailTextFieldWidth = cellFrame.size.width - (textLabelSize.width + 50);
float detailTextFieldHeight = cellFrame.size.height - 1;
NSLog(@"detail text field calculated frame width, height, %f, %f", detailTextFieldWidth, detailTextFieldHeight);
CGRect frame = CGRectMake(cellFrame.origin.x, cellFrame.origin.y, detailTextFieldWidth, detailTextFieldHeight);
UITextField* textField = [[UITextField alloc] initWithFrame:frame];
2
我认为,这样做的更简单的方法是使用detailTextLabel来显示文本并处理行选择代码中文本编辑字段的显示和隐藏。我有这个具有以下工作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITextField *tmpView = [self detailLabel:indexPath];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *detailLabel = [cell detailTextLabel];
CGRect tmpFrame = [detailLabel frame]; // the existing frame
tmpFrame.size.width += 3; // space for the cursor
tmpView.frame = tmpFrame;
tmpView.textColor = detailLabel.textColor;
cell.accessoryView = tmpView;
detailLabel.text = nil;
[tableView addSubview:tmpView];
[tmpView becomeFirstResponder];
[tableView setNeedsDisplay];
}
,并在取消选择
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UITextField *tmpView = (UITextField *) cell.accessoryView;
UILabel *label = [cell detailTextLabel];
label.text = tmpView.text;
cell.accessoryView = nil;
[tableView setNeedsDisplay];
}
其他唯一的诀窍以下是设置行选择在的cellForRowAtIndexPath无法比拟的突出.. 。
cell.selectionStyle = UITableViewCellSelectionStyleNone;
相关问题
- 1. 如何创建下拉表格视图使用两个自定义单元格?
- 2. 如何创建自定义单元格与目标C标签和文本框
- 3. TableView,设置可编辑的单元格
- 4. 单元格的自定义编辑
- 5. 如何在表格视图单元格上创建自定义按钮
- 6. 自定义单元格标签
- 7. 如何创建自定义javadoc标签?
- 8. 如何从子视图自定义单元格Refersh UI视图?
- 9. 无法在编程创建的自定义单元格中设置透明度
- 10. 创建自定义标签
- 11. 创建自定义标签
- 12. 如何编辑自定义可可插件的子视图
- 13. 使用R中的自定义标签创建传单图
- 14. LWUIT标签:创建自定义标签
- 15. iPhone:UITableView与自定义单元格设置
- 16. 自定义单元格的表视图
- 17. 如何从视图控制器设置数据UITableView的自定义单元格
- 18. LWUIT,如何为表单标题创建自定义标签
- 19. 自定义单元格的表格视图(编程)
- 20. 如何在表格单元格中有多个标签而不使自定义表格视图iphone
- 21. 如何创建两个自定义表格单元格按钮?
- 22. 如何将自定义表格单元格视图导入NSTableView?
- 23. 如何使用自定义视图创建弹出式菜单?
- 24. 如何为Eclipse创建自定义配置编辑器插件?
- 25. iOS:使用IB创建自定义单元格,以编程方式创建UITableView
- 26. iPhone:如何dealloc自定义单元格标签
- 27. 如何设置cakephp编辑表单自定义网址?
- 28. 如何使用自定义的JTable单元格编辑器和格渲染
- 29. 如何在自定义单元格中为标签设置标签的旧金山字体查看
- 30. 创建自定义视图