将文本字段添加到 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的主要内容,如果未能解决你的问题,请参考以下文章