将文本字段添加到 tableviewheader

Posted

技术标签:

【中文标题】将文本字段添加到 tableviewheader【英文标题】:add textfield to tableviewheader 【发布时间】:2013-02-22 22:59:38 【问题描述】:

我正在尝试将文本字段添加到标题视图。我不知道为什么我看不到我的文本字段。当我使用标签时,它可以完美地工作。

以下是代码:

-(UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
       UIView *tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(40, 0, self.view.frame.size.width - 70, 30)];
    UITextField *sectionTitleTF1 = [[UITextField alloc] initWithFrame:CGRectMake(58, 0, 500, 30)];
    sectionTitleTF1.backgroundColor = [UIColor whiteColor];
    [sectionTitleTF1 becomeFirstResponder];
    [tableHeaderView addSubview:sectionTitleTF1];
return tableHeaderView;

谢谢

【问题讨论】:

您对 sectionTitleTF1 和/或 tableHeaderView 的矩形很可能是错误的。 【参考方案1】:

试试这个,

  You can adjust view, textfield frame based on your device ipad or iphone




 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
return 30.0;


-(UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UIView *tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(40, 0, self.view.frame.size.width - 70, 30)];
tableHeaderView.backgroundColor =[UIColor grayColor];
UITextField *sectionTitleTF1 = [[UITextField alloc] initWithFrame:CGRectMake(58, 0, 500, 30)];
sectionTitleTF1.backgroundColor = [UIColor whiteColor];
[sectionTitleTF1 setBackgroundColor:[UIColor whiteColor]];
[sectionTitleTF1 setFont:[UIFont boldSystemFontOfSize:15]];
[sectionTitleTF1 setBorderStyle:UITextBorderStyleLine];
[sectionTitleTF1 setTextAlignment:UITextAlignmentCenter];
[sectionTitleTF1 setKeyboardType:UIKeyboardTypeNumbersAndPunctuation];
[sectionTitleTF1 becomeFirstResponder];
[tableHeaderView addSubview:sectionTitleTF1];
return tableHeaderView;

【讨论】:

【参考方案2】:

你实现过数据源的这个方法吗?如果您希望显示部分标题,这是必须的。 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    return 30.0;


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return 1;

另外,如果您不知道,您可以直接返回UITextField,而不是添加为子视图。但是,您可能希望它作为子视图,具体取决于您想要实现的目标。

编辑:数据源不是委托

【讨论】:

是的,我确实添加了委托。当我将文本字段添加到同一类中的单元格但不适用于节标题时,它可以工作。 不仅要设置数据源,还必须在(已编辑)答案中实现上述方法。您必须设置标题的高度。 @din 将文本字段添加到与标题不同的单元格时,您必须为标题指定高度,否则它将为 0(并且您的字段不会显示)【参考方案3】:

添加这个 sectionTitleTF1.borderStyle = UITextBorderStyleRoundedRect; 然后你会看到它

【讨论】:

以上是关于将文本字段添加到 tableviewheader的主要内容,如果未能解决你的问题,请参考以下文章

如果已将一个文本字段添加到单元格,如何不创建新文本字段

iOS将图像添加到文本字段

如何将颤动的日期选择器值添加到文本字段?

如何使用文本字段和按钮将文本添加到每个单元格中?

如何快速将一个 DatePicker 添加到三个文本字段中

将文本字段动态添加到 extjs 中的面板