只有2个条目实现可选下拉菜单的最简单方法?的iOS

时间:2017-03-22 10:59:30

标签: ios objective-c xcode

我想显示一个简短的可选下拉菜单。只有2个条目。最好的方法是什么?我查看了Picker View但看起来并不好,因为它是一个不同的视图 - 我希望这些选项可以直接显示在当前屏幕上,就像你在网站上看到一个下拉菜单一样。

另外,如何通过点击按钮将其连接起来?

4 个答案:

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

    返回单元格;

}

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

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),CGRect​Get​Max​Y(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;

}