由 UITableView 制成的下拉按钮不重叠按钮
Posted
技术标签:
【中文标题】由 UITableView 制成的下拉按钮不重叠按钮【英文标题】:Dropdown Button made from UITableView not overlapping buttons 【发布时间】:2017-11-02 16:47:23 【问题描述】:我使用 TableView 实现了一个下拉按钮,这样当用户单击按钮时,按钮底部会弹出一个下拉列表。到目前为止,此功能运行良好。但是,当我在第一个按钮的底部添加另一个按钮并单击下拉菜单时,tableView 不会与底部的按钮重叠。它不是出现在顶部,而是出现在下方。
我的问题是当点击下拉按钮时如何让 tableView 出现在第二个按钮的顶部。我在下面插入了我的代码。
#
import < UIKit / UIKit.h >
@interface ViewController: UIViewController < UITableViewDataSource, UITableViewDelegate >
@property(weak, nonatomic) IBOutlet UIButton * categoriesBtn;
@property(weak, nonatomic) IBOutlet UITableView * categoriesTable;
@property(strong, nonatomic) NSArray * data;
-(IBAction) categoriesButton: (id) sender;
-(IBAction) submit: (id) sender;
@end
@implementation ViewController
-(void) viewDidLoad
[super viewDidLoad];
[self.categoriesBtn setTitle: @ "+ Categories" forState: UIControlStateNormal ];
self.data = [[NSArray alloc] initWithObjects: @ "Value1", @ "Value2", @ "Value3", @ "Value4", @ "Value5", nil ];
self.categoriesTable.delegate = self;
self.categoriesTable.dataSource = self;
self.categoriesTable.hidden = YES;
-(NSInteger) tableView: (UITableView * ) tableView numberOfRowsInSection: (NSInteger) section
return [self.data count];
-(UITableViewCell * ) tableView: (UITableView * ) tableView cellForRowAtIndexPath: (NSIndexPath * ) indexPath
static NSString * simpleTableIdentifier = @ "SimpleTableItem";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: simpleTableIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: simpleTableIdentifier];
cell.textLabel.text = [self.data objectAtIndex: indexPath.row];
return cell;
-(IBAction) categoriesButton: (id) sender
if (self.categoriesTable.hidden == YES)
self.categoriesTable.hidden = NO;
else
self.categoriesTable.hidden = YES;
-(void) tableView: (UITableView * ) tableView didSelectRowAtIndexPath: (NSIndexPath * ) indexPath
UITableViewCell * cell = [self.categoriesTable cellForRowAtIndexPath: indexPath];
[self.categoriesBtn setTitle: cell.textLabel.text forState: UIControlStateNormal];
self.categoriesTable.hidden = YES;
-(void) didReceiveMemoryWarning
[super didReceiveMemoryWarning];
@end
【问题讨论】:
你有多少个UITableView
?而且我找不到每个单元格上的按钮在哪里。
我现在只有一个 UITableView 但是一旦我让这部分工作,我想实现多个。我不确定我是否理解有关单元格按钮的问题。
你的下拉列表是什么? the button on a cell
我的意思是我看不到你的手机并按下按钮;)
我的下拉列表是viewDidLoad中定义的数组。
不,我的意思是什么视图显示你的数组
【参考方案1】:
要使categoriesTable
与queryTypeButton
重叠,您应该更改ViewController
的子视图的顺序,如下图所示。使用此顺序,categoriesButton
位于按钮下方,因此当它显示在屏幕上时,它将位于屏幕顶部(视图树)。
或者每次单击categoriesButton
时,您都应该将categoriesTable
放在前面。如果您这样做,您的categoriesTable
将在出现时与您的所有按钮重叠。像这样更改您的 categoriesButton
方法
-(IBAction)categoriesButton: (id) sender
[self.view bringSubviewToFront:self.categoriesTable];
if (self.categoriesTable.hidden == YES)
self.categoriesTable.hidden = NO;
else
self.categoriesTable.hidden = YES;
【讨论】:
谢谢它的工作。您介意解释一下为什么更改订单有效吗? @kudzi 我已经通过一些解释更新了我的答案。如果您不明白,请告诉我;) 这是最简单最好的解释,谢谢。很清楚,我理解。 欢迎我的朋友@kudzi ;)以上是关于由 UITableView 制成的下拉按钮不重叠按钮的主要内容,如果未能解决你的问题,请参考以下文章
UITableView Section Index 重叠行删除按钮
在 Shiny 中,避免 selectInput 下拉菜单与其下方的操作按钮重叠