在我的应用中,我需要隐藏并显示部分的行(其中有一个DatePicker)。现在,我正在使用放在表格行中的按钮,但这是不好的方式。我希望当用户点击节标题 - DatePicker行显示,然后再次点击 - 隐藏。当用户按下节标题时,我该怎么办?也许还有另一个解决方案吗?
现在看起来像这样:
答案 0 :(得分:1)
最好在标题
中添加UIButton- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
答案 1 :(得分:1)
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc]init];
//Within this view you can add a button which is the same size of section height and call create related function when button is clicked
return view;
}
答案 2 :(得分:1)
您可以在viewForHeaderInSection中使用标记创建自定义视图:方法:
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] initWithFrame:....];
view.tag = section;
// Customize your view
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(headerTapped:)];
[tap setNumberOfTapsRequired:1];
[view addGestureRecognizer:tap]
return view;
}
在headerTapped:方法中,您可以根据标记识别哪个视图被点击。
答案 3 :(得分:0)
您可以使用UITableViewDelegate的tableView:viewForHeaderInSection:方法返回具有标签的视图(标题名称)。 在返回视图之前,您可以向标题视图添加UITapGestureRecognizer,在触摸标题视图时调用某个选择器。在该方法中,您可以隐藏或显示整个部分。
答案 4 :(得分:0)
您可以在viewForHeaderInSection中添加按钮。并确定其点击事件。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
// create the parent view that will hold header Label
UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(10.0, 0.0, 300.0, 44.0)];
// create the button object
UIButton * headerBtn = [[UIButton alloc] initWithFrame:CGRectZero];
headerBtn.backgroundColor = [UIColor clearColor];
headerBtn.opaque = NO;
headerBtn.frame = CGRectMake(0.0, 0.0, 30.0, 320.0);
[headerBtn setTitle:@"Middle" forState:UIControlEventTouchUpInside];
[headerBtn addTarget:self action:@selector(ActionEventForButton:) forControlEvents:UIControlEventTouchUpInside];
[customView addSubview:headerBtn];
return customView;
}
答案 5 :(得分:0)
我的想法是......
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == MIDDLE_SECTION) {
UIView *view = [[UIView alloc]init];
//Within this view you can add a button which is the same size of section height and call create related function when button is clicked
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = view.frame;
[button addTarget:self action:@selector(middleSectionPressed:) forControlEvents:UIControlEventTouchUpInside];
return view;
}
return nil;
}
-(void)middleSectionPressed:(id)sender
{
if (self.isMiddleSelected)
{
self.isMiddleSelected = YES;
}
else
self.isMiddleSelected = NO
[self.tableView reloadRowsAtIndexPaths:middleIndexPath withRowAnimation:UITableViewRowAnimationNone];
}
现在根据此中间选择的布尔值加载节单元格。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == MIDDLE_SECTION)
{
if (self.isMiddleSelected)
return 1;
else
return 0;
}
}