将 UIButton 放在 UIView 的顶部

Posted

技术标签:

【中文标题】将 UIButton 放在 UIView 的顶部【英文标题】:Place UIButton on the top of a UIView 【发布时间】:2013-03-02 14:00:13 【问题描述】:

我计划有一个视图控制器、一个表格视图(3 个部分)和 3 个按钮。我不知道我是否可以将按钮 1 放在 table view 和 table view 的顶部(正好在第 1 部分的顶部),按钮 2 在第 2 部分的顶部,按钮 3 在第 3 部分的顶部.

而且我还希望当人们向下滚动时,按钮 1 仍然在顶部,直到它遇到按钮 2 -> 按钮 2 将在顶部,当它遇到按钮 3 时,按钮 3 将在顶部。

你能帮我做我想做的事吗?

【问题讨论】:

修复什么?我没有看到任何无法正常工作的代码。 我编辑了。提前谢谢你。 “在部分顶部”是什么意思?到目前为止,您尝试过什么? 是的,我试过了。我用按钮 1 替换了第 1 节的标题。但我只能替换按钮 1。我不能用按钮 2、3 替换第 2、3 节的标题。我想这样做是因为我想设置隐藏的 3 个部分默认情况下。当人们单击按钮时,将出现部分。提前谢谢你。 停止planing并尝试一些代码,当你遇到困难时回来寻求帮助 【参考方案1】:

下面是一个可能对您有用的示例。在您的UITableViewController(也应该是您的UITableViewDelegate)中,实现以下代码:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    UIButton *button = nil;
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, HEADER_HEIGHT)];
    switch (section) 
        case 0:
            button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, BUTTON1_WIDTH, HEADER_HEIGHT)];
            [button addTarget:self action:@selector(SELECTOR1) forControlEvents:UIControlEventTouchUpInside];
            // do some more things
            break;
        case 1:
            button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, BUTTON2_WIDTH, HEADER_HEIGHT)];
            [button addTarget:self action:@selector(SELECTOR2) forControlEvents:UIControlEventTouchUpInside];
            // do some more things
            break;
        case 2:
            button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, BUTTON3_WIDTH, HEADER_HEIGHT)];
            [button addTarget:self action:@selector(SELECTOR3) forControlEvents:UIControlEventTouchUpInside];
            // do some more things
            break;
        default:
            // do default things
            break;
    

    [headerView addSubview:button];
    return headerView;

别忘了实现这个:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

    return HEADER_HEIGHT;

【讨论】:

非常感谢。如果我遇到困难,我会尝试您的解决方案并回来。【参考方案2】:

使用bringSubviewToFront: 方法并在viewDidLoad 方法中编写如下代码。

[self.view bringSubviewToFront:yourButton];

我认为这对你会有帮助。

【讨论】:

以上是关于将 UIButton 放在 UIView 的顶部的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITapGestureRecognizer 的 UIView 顶部的 UIButton 不起作用

如何强制 UIButton 始终位于顶部

显示自定义 UIButton 的问题

从包含 UIViewController 为 UIView 的 UIButton 分配回调

UIVIew 中的 UIButton 不在 iPhone 应用程序中居中

如何将静态 UIButton 覆盖在 UITableView 上