我怎么知道用户点击了Static TableView中的节标题

时间:2013-12-11 12:49:11

标签: ios objective-c uitableview

在我的应用中,我需要隐藏并显示部分的行(其中有一个DatePicker)。现在,我正在使用放在表格行中的按钮,但这是不好的方式。我希望当用户点击节标题 - DatePicker行显示,然后再次点击 - 隐藏。当用户按下节标题时,我该怎么办?也许还有另一个解决方案吗?

现在看起来像这样:

enter image description here

enter image description here

6 个答案:

答案 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;
   }
}