如何在Xcode中创建下拉菜单?

9

我是一位非常新的IOS开发者,我需要帮助。如何在xcode中创建下拉框?有人可以为我提供一个创建国家列表下拉框的示例吗?


请参考 https://github.com/satishazad/SAMenuDropDown。 - Satish Azad
@Ramz请不要发布损坏的链接。 - yazh
5个回答

19

我在这里找到了两个下拉列表的演示,其中一个是创建自定义可展开的UITableViewCell,如下所示:

enter image description here

enter image description here

源代码:- DEMO

另一个是自定义下拉列表,如下所示:

enter image description here

点击测试后,打开下拉列表,如下图所示:

drop down list

带选项卡栏的源代码:DEMO

没有选项卡栏的更新源代码:

http://www.sendspace.com/file/83qws5


1
第二个下拉菜单可以,但我想要一个带有选项卡的例子。你能给我任何例子吗? - Adnan Khan
1
您只需在项目中添加选项卡控制器,并实施以上项目方法。 - Nitin Gohel
1
抱歉,Nitin Gohel,我想要这个例子没有制表符,因为这个例子已经有制表符了。 - Adnan Khan
在单一视图应用程序中创建下拉菜单是否可行? - Adnan Khan
谢谢,但我还是卡住了。我的主文件#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }你能告诉我该怎么做吗?我替换了你的主文件代码,但是出现了错误。 - Adnan Khan
显示剩余6条评论

4
我认为在iOS中不应该使用下拉框,因为这是桌面操作系统的UI控制元素。您应该想出其他方法,利用现有组件(如PickerView),以实现UI的一致性。
如果一定需要使用下拉框,您可以创建一个表视图,在标签和三角形按钮下方放置它,并填充其值(通过点击按钮显示或隐藏表视图)。

3

由于iOS上没有原生的DropDown元素,您可以利用自定义背景和UITableView来实现它。以下是如何操作。

伪代码

  • 创建一个TextField并将其委托给父控制器
  • 实现UITextFieldDelegate并实现textFieldShouldBeginEditing方法
  • 在其中编程方式下创建一个新的UIViewController并实现UITableView
  • 创建一个自定义协议并创建它的对象(代理)。
  • textFieldShouldBeginEditing方法中,加载此控制器并以模态方式呈现它,传递所需表的数据源,并将代理设置为父级。
  • 在新的tableViewController中,实现UITableViewDelegate并实现didSelectRowAtIndex path方法。
  • 在选择行时,调用带有适当数据的代理。
  • 关闭模态呈现的控制器。

2

针对在2016年寻找小而简单的Swift组合框的人们,我试用了一些旧的和新的(但是Obj-C)库,最后选择了这个:

https://github.com/sw0906/SWCombox

以下是截图: enter image description here


1
设计下拉列表的简单方法是通过类似于UITableView和一些动画来表示它。这使得它看起来真的像一个下拉列表。这里是我用来创建一个下拉列表的代码。首先导入<QuartzCore/QuartzCore.h>框架。
-(IBAction)DropDownTable:(id)sender
{
TableView.hidden = NO;
if(TableView.frame.origin.y ==203)
{
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5f];
    [TableView setFrame:CGRectMake(224, 204, 27, 160)];
    [UIView commitAnimations];
    [self.view TableView];
}

else if (TableView.frame.origin.y == 204)
{
    [TableView setFrame:CGRectMake(224, 203, 27, 0)];
    TableView.hidden = YES;
}

[self.view addSubview:TableActivityLevel];
}

首先创建一个TableView,声明它的方法并创建数组。将此函数放在UIButton的点击事件中,你会看到它的工作效果!!!祝编码愉快 :)

顺便提一下,依赖于 origin.y 的值作为指示下拉菜单是否展开的标志似乎非常难以理解 [糟糕的代码气味]。我还没有仔细查看代码,但希望重写它以使用显式布尔标志来记住下拉菜单所处的状态不会很困难。 - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接