我正在以编程方式向UITableViewController添加一个按钮,如下所示:
-(void)createFlipButton
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoDark];
button.frame = CGRectMake(282, 372, 18, 19);
[button addTarget:self action:@selector(flipView) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
[self.view bringSubviewToFront:button];
}
但是它会陷入占据button.frame空间的单元格中。为什么[self.view bringSubviewToFront:button]
没有工作?
此外,[self.tableView bringSubviewToFront:button]
也不起作用。
答案 0 :(得分:1)
我猜测你真正想要的是一个浮动视图,即一个在桌面视图滚动时不移动的视图。按钮看起来粘在你的单元格上的原因是整个表都在滚动视图中,所以当内容移动时,按钮也会这样做。
要做的是在桌子滚动时调整添加的视图的位置。只需实现委托方法:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint buttonOrigin = CGPointMake(200,50);
self.button.frame = CGRectMake(buttonOrigin.x, buttonOrigin.y + self.tableView.bounds.origin.y, self.button.frame.size.width, self.button.frame.size.height);
}
您需要存储按钮的参考,以便您可以在此处访问它,也可以将按钮的位置放入ivar中。
如果您有权访问WWDC 2011视频,您将在第125课中找到技巧。
答案 1 :(得分:0)
你可以创建一个透明的UIView;将您的按钮添加到该UIView,然后将该UIView添加到您拥有的视图层次结构中。 这应该按照你的要求工作(按钮不是表格视图的一部分)。 如果需要有关示例代码的任何帮助,请在下面添加注释。
答案 2 :(得分:0)
每当我想在同一个视图中使用Table View和其他UI项时,我都会使用UIViewController。此视图控制器符合UITableViewDelegate和UITableViewDataSource。实现了UITableView委托和DataSource方法,因此该视图控制器也可用作表视图控制器。我使用IB或故事板来建立联系。但是,如果您想以编程方式创建所有内容,这也应该有效。
在您的情况下,如果您希望UIButton与表视图分开,则使用如上所述的UIViewController是其中一个选项。
答案 3 :(得分:-1)
您应该在tableHeaderView
中添加按钮-(void)createFlipButton
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoDark];
button.frame = CGRectMake(10, 10, 18, 19);
[button addTarget:self action:@selector(flipView) forControlEvents:UIControlEventTouchDown];
self.tableView.tableHeaderView = button
self.tableView.delegate = self;
[self.tableView reloadData];
}
and implement the following UITableView Delegate
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 44;/// sample
}
答案 4 :(得分:-1)
按钮添加 UItableViewCell
[cell.contentView addSubview:Button];