我想显示一个简短的可选下拉菜单。只有2个条目。最好的方法是什么?我查看了Picker View但看起来并不好,因为它是一个不同的视图 - 我希望这些选项可以直接显示在当前屏幕上,就像你在网站上看到一个下拉菜单一样。
另外,如何通过点击按钮将其连接起来?
答案 0 :(得分:0)
尝试使用带有类型操作表的UIAlertController。
https://www.invasivecode.com/weblog/uialertcontroller-alert-action-sheet/
答案 1 :(得分:0)
应该是这样的
- (无效)viewDidLoad中{
dropDownButton = [UIButton buttonWithType:UIButtonTypeCustom];
[dropDownButton addTarget:self 行动:@选择(buttonClicked :) forControlEvents:UIControlEventTouchUpInside];
[dropDownButton setTitle:@" Show View" forState:UIControlStateNormal];
dropDownButton.frame = CGRectMake(80.0,210.0,160.0,40.0);
[dropDownButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[查看addSubview:dropDownButton];
dropDownTableView = [[UITableView alloc] initWithFrame:CGRectMake(CGRectGetMinX(button.frame),CGRect Get Max Y(button.frame),button.frame.size.width,88)style:UITableViewStylePlain]; < / p>
// tablewview height是单元格高度(44)* numberOfRows(arraycount)
dropDownTableView.dataSource = self;
dropDownTableView.delegate = self;
[self.view addSubview:dropDownTableView];
dropDownTableView.hidden = YES;
}
- (void)buttonClicked:(UIButton *)发件人 {
dropDownTableView.hidden = NO;
}
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
返回1;
}
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
返回2;
}
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString * CellIdentifier = @&#34; Cell&#34 ;;
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
//配置单元格... cell.textLabel.text = [yourarray objectAtIndex:indexPath.row];
返回单元格;
}
NSLog(@&#34;%d&#34;,indexPath.row);
[dropDownButton setTitle:[yourarray objectAtIndex:indexPath.row] forState:UIControlStateNormal];
dropDownTableView.hidden = YES;
}
答案 2 :(得分:0)
我在UITableView或ActionSheet之间选择是一个两难选择。它们都很好,但我想在我的应用程序中显示实际的下拉菜单。我遇到了这两个GitHub项目,有很酷且简单的集成方式。
https://github.com/AssistoLab/DropDown
https://github.com/maxkonovalov/MKDropdownMenu
他们也提出了Cocopods。快乐的编码...
答案 3 :(得分:0)
Rajesh Dharani 的精彩回答。 我只是把它安排得更清楚,而且超过 2 个条目:
UIButton *dropDownButton;
UITableView *dropDownTableView;
NSArray *yourArray;
- (void)viewDidLoad
{
yourArray = @[@"English", @"French", @"German", @"Spanish", @"Hebrew", @"Arabic", @"Persian", @"Finnish", @"Japanese", @"Korean"];
dropDownButton = [UIButton buttonWithType:UIButtonTypeCustom];
[dropDownButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[dropDownButton setTitle:@"Show View" forState:UIControlStateNormal];
dropDownButton.frame = CGRectMake(107.5, 150, 160.0, 40.0);
[dropDownButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:dropDownButton];
// dropDownTableView = [[UITableView alloc] initWithFrame:CGRectMake(CGRectGetMinX(button.frame),CGRectGetMaxY(button.frame), button.frame.size.width,88) style:UITableViewStylePlain] ;
dropDownTableView = [[UITableView alloc] initWithFrame:CGRectMake(30,30, 300,500) style:UITableViewStylePlain];
// tablewview height is cell height(44) * numberOfRows (arraycount)
dropDownTableView.dataSource = (id)self;
dropDownTableView.delegate = (id)self;
[self.view addSubview:dropDownTableView];
dropDownTableView.hidden = YES;
}
- (void) buttonClicked:(UIButton*)sender
{
dropDownTableView.hidden = NO;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [yourArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
// Configure the cell...
cell.textLabel.text = [yourArray objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%d", (int)indexPath.row);
[dropDownButton setTitle:[yourArray objectAtIndex:indexPath.row] forState:UIControlStateNormal];
dropDownTableView.hidden = YES;
}