UIPickerView 与 NSDictionary

2023-11-27

我是一名 .NET 程序员,也是 Objective C 的新手。

我正在尝试制作一个 UIPickerView,它的作用类似于 .NET 下拉列表。用户看到文本列表并选择一个,所选值(即 ID)将在代码中使用。

我已经浏览了近半天试图弄清楚这一点。我可以添加一个带有字符串列表的常规 PickerView、带有多个组件的选择器视图和带有依赖组件的选择器视图,但这些视图似乎都无法回答我的查询。

请帮忙。


您可以使用 NSDictionary 作为 UIPickerView 的数据源,但如果您有一个已包含键/值对的自定义 NSObject,那么使用这些对象的 NSArray 作为数据源会更简单。

假设自定义对象是 Planet,其属性为planetId (int) 和planetName (NSString)。创建一个名为planets的NSArray,其中的对象按照您希望它们在选择器中出现的顺序排列(它们不必按照planetId顺序排列)。

在 titleForRow 中,你会这样做:

return ((Planet *)[planets objectAtIndex:row]).planetName;

在 didSelectRow 中,获取选定的行星:

Planet *selectedPlanet = (Planet *)[planets objectAtIndex:row];

//
//
使用 NSDictionary,您必须将键值映射到选择器的行号。一种方法是将键值设置为行号并将自定义对象添加为值。

所以字典将像这样创建:

NSArray *keys = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", nil];
NSArray *values = [NSArray arrayWithObjects:mercury, venus, earth, mars, nil];
items = [[NSDictionary dictionaryWithObjects:values forKeys:keys] retain];

在 titleForRow 中,你会这样做:

NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *planet = (Planet *)[items objectForKey:itemKey];
return planet.planetName;

在 didSelectRow 中,你会这样做:

NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *selectedPlanet = (Planet *)[items objectForKey:itemKey];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIPickerView 与 NSDictionary 的相关文章

  • 在运行时获取 iPhone 应用程序的产品名称?

    如何才能实现这一目标 我想获取名称 以便可以在应用程序中显示它 当然 每次更改名称时不必在代码中更改它 Try this NSBundle bundle NSBundle mainBundle NSDictionary info bundl
  • 在不同的捆绑包上测试 iPhone 应用内购买?

    我们有一组 iPhone 应用程序的 Beta 测试人员 最近 我们在应用程序中添加了应用内购买功能 在此之前 我们会使用单独的捆绑 ID 和名称向 Beta 测试人员发送临时版本 以便他们可以在手机上拥有商店版本和临时版本 然而 似乎我们
  • 获取对 iOS 应用程序中最顶层视图/窗口的引用

    我正在创建一个可重用的框架 用于在 iOS 应用程序中显示通知 我希望将通知视图添加到应用程序中其他所有内容的顶部 有点像 UIAlertView 当我初始化监听 NSNotification 事件并添加视图作为响应的管理器时 我需要获取对
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • 多次添加同一个子视图来查看

    我不知道这是否可行 但我想做的是将子视图多次添加到视图中 我尝试过这样的事情 self view addSubview newView newView center CGPointMake 160 100 self view addSubv
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he
  • 有什么方法可以让我知道按屏幕的力度有多大

    我想找到触摸的压力 我只是不知道如何在不越狱并获取原始触摸数据的情况下实现该结果 有谁知道我会怎么做 你无法获得来自SDK的压力nor未记录的方法 然而你can使用未记录的方法检测触摸的大小 在 GSEvent UIEvent 的较低级别表
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • 为什么 Xcode 4 不会对我未完整实现 UITableViewDataSource 协议发出警告?

    如果我在 Xcode 中使用以下代码声明并不完全实现我自己的协议 一些协议 h protocol SomeProtocol
  • Swift - 选择值后隐藏 pickerView

    我发现了类似的问题 他们的答案很有帮助 但我坚持最后一件事 我试图在点击字段时显示 pickerView 然后选择数据时 我希望 pickerView 隐藏 我可以从 pickerView 获取数据来隐藏 但是 pickerView 后面仍
  • UIView 子类不会自动调整大小

    我一直在寻找有关调整大小的背景信息 但找不到太多 我知道我需要设置autoresizesSubviews在超级视图和autoresizingMask在子视图上 我已经这样做了 并且我的 UIImageViews 正确调整了大小 但我的自定义
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • 如何将 NSIndexpath 转换为 NSInteger 或简单的 int?

    我需要将 nsindexpath var 转换为 NsInteger 或简单的 int 例如 int rowIndex mGoogleBaseTable selectedRow mGoogleBaseTable is a NSTable t
  • 沿着预定路径移动图像?

    是否可以通过按下 iphone SDK 中的按钮来将图像设置为沿着预定路径运动 我不是在寻找任何奇特的东西 我正在研究一个简单的概念 但这会节省大量动画工作 是的 您可以通过创建一个路径来为任何 CALayer 制作动画CAKeyframe
  • Objective C 如何将文本字段添加到导航栏中

    我正在尝试将文本字段添加到导航栏中 但它没有显示在模拟器中 我在 viewdidload 中按如下方式执行 UITextView textField UITextView alloc initWithFrame CGRectMake 0 0
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • 对于某些纹理尺寸,glFramebufferTexture2D 在 iPhone 上失败

    当我尝试将纹理附加到帧缓冲区时 glCheckFramebufferStatus 报告某些纹理大小的 GL FRAMEBUFFER UNSUPPORTED 我已经在第二代和第四代 iPod Touch 上进行了测试 两个模型之间失败的纹理尺
  • 使用 Storyboard 时获取 NSManagedObjectContext

    目标是获取当前的 NSManagedObjectContext 以便使用 Core Data 在 iOS 4 3 中 我将 UINavigationController 的委托设置为 AppDelegate 如下所示 在 AppDelega
  • 将 CALayer 旋转 90 度?

    如何旋转CALayer90度 我需要旋转所有内容 包括子图层和坐标系 Obj C theLayer transform CATransform3DMakeRotation 90 0 180 0 M PI 0 0 0 0 1 0 Swift

随机推荐

  • Windows 代码页与标准 C/C++ 文件名交互?

    客户抱怨我们的代码过去常常写入文件名中包含日语字符的文件 但现在不再适用于所有情况 我们一直只是使用良好的旧 char 字符串来表示文件名 所以它曾经起作用让我有点震惊 而且我们没有做任何我知道应该让它停止工作的事情 我让他们向我发送了一个
  • HEAD 响应是否比 GET 更快?

    我目前正在使用 GET 获取有关文件的信息 如果使用 HEAD 请求重写它会更快吗 因为我在第一次响应后关闭了连接 HEAD 响应仅包含 HTTP 标头 但不包含正文 如果正文中不使用通常在 GET 响应中传输的任何信息 则仅使用 HEAD
  • 为什么多次调用 setTimeout() 会导致如此大的延迟?

    我有一个复杂的动画序列 涉及 JavaScript 中的淡入淡出和过渡 在这个由四个元素同时变化的序列组成的过程中 setTimeout用于每个元素 在 Internet Explorer 9 中进行测试 动画以实时速度运行 应该需要 1
  • 检查字符串是否包含空格

    我正在尝试检查字符串中是否有空格 以下内容对我不起作用 if skpwords contains lcase query And Mid query InStrRev query then end if 检查字符串是否包含字符 或子字符串
  • Rails:激活 SSL 支持会让 Chrome 感到困惑

    Rails 应用程序有一个很好的配置选项 config force ssl true 然而 似乎仅仅将其设置为 true 并不能让 HTTPS 连接正常工作 更重要的是 在尝试 但失败 连接到之后https 本地主机 3000对于 Chro
  • Iterator.remove() IllegalStateException

    在下面的代码中 我有一个 try catch 块 它尝试使用 Iterator 从 Vector 中删除元素 我创建了自己的课程QueueExtendingVect延伸Vector并实施Iterator 变量qev1是类的一个实例Queue
  • 如何将 IEnumerable> 转换为 IObservable

    是否有内置方法将 IEnumerable gt 转换为 IObservable 顺序并不重要 重要的是我得到的东西 尽管最好是在它们完成的时候 如果它还不存在 那么实现它的好方法是什么 我相信这会起作用 tasks Select t gt
  • 读/写二进制文件

    我只是想从二进制文件中读取 写入 我一直在关注this教程 它可以工作 除了它似乎正在将内容写入 txt 文件 我在测试时将文件命名为test bin 但记事本可以打开它并正确显示它 所以我认为它实际上不是一个二进制文件 我已经告诉它它是一
  • kotlin 如何使 setOnClickListener 接受函数作为参数

    在 kotlin 中 我们可以使用setOnClickListener 像这样 view setOnClickListener println Hello 但是如果我定义自己的接口 我只能传递匿名对象 如下所示 obj setMyListe
  • 如何在Python中的文件中写入新行

    我有一个这样的文件 word number word number 我只想保留 保留这些单词 再次换行中的一个单词 word word 到目前为止我的代码 f open new file txt w with open initial fi
  • 查找 SQL 中的所有整数间隙

    我有一个数据库 用于存储我从外部源获取的游戏不同比赛的信息 由于一些问题 数据库中偶尔会出现空白 可能缺少 1 个 ID 到几百个 ID 我想让程序提取丢失游戏的数据 但我需要先获取该列表 以下是表格的格式 id pk identity G
  • 更改“多选”下拉框中所选项目的背景颜色? [复制]

    这个问题在这里已经有答案了 我想为多选下拉框中的所选项目赋予黄色 选择后默认背景是灰色的 如何执行此操作HTML CSS 这个问题是关于多选但对于单选请参考 相关但不重复 如何将背景颜色应用于选定的选项 我们可以简单地借助以下 CSS 来完
  • Laravel 5.1 视图未找到

    这似乎是 Laravel 中时不时出现的一个问题 我正在编写一个 CRUD 控制器 以配合它 但是经过测试 我得到了InvalidArgumentException in FileViewFinder php line 137 View b
  • 如何在 Firebase 托管中实现 .htaccess 配置?

    我的域中有一个 htaccess 配置 允许我的应用程序与路由完美配合 当您刷新 Angular 2 应用程序无法解析路线时 它可以避免错误 我当前的配置是这个
  • 如何在 PyQt 中使用 pdf.js 查看器渲染 PDF?

    我尝试在我的项目中添加 pdf js 查看器文件 它可以在 Chrome Mozilla Safari 等浏览器中运行 但它不会加载 node webkit 和 PyQt webkit 中的某些页面 我正在尝试使用 iframe 加载文件
  • 为什么只将数据存储在平衡二叉搜索树的叶节点中?

    我买了一本关于计算几何的好小书 在到处阅读时 我经常偶然发现这种特殊的二叉搜索树的使用 这些树是平衡的 应该只在叶节点中存储数据 而内部节点应该只存储引导搜索到叶节点的值 下图显示了该树的示例 其中叶子是矩形 内部节点是圆形 我有两个问题
  • JQuery 使用 .each() 延迟

    您有什么想法可以使用 JQuery 的延迟方法和一个函数来检测所有更改的表单并将每个表单作为 Ajax 帖子提交吗 如果我只列出大量表单提交 我可以得到同样的结果 但如果我使用 form changed each function retu
  • 预填充 HTML 表单文件输入

    我有一个 VBScript 它可以检查 HTML 表单 用固定值填充它 然后提交它 到目前为止它工作正常 但现在我需要设置将在表单数据中上传的文件的位置 我相信如果我将位置设置为该值 它就会起作用 但事实并非如此
  • 强制WebView在某个网络上运行

    是否可以强制WebView通过指定的方式加载 URLNetwork 我的设备打开了两个网络连接 wifi 和移动数据 移动数据网络被设置为传出连接的默认网络 因此连接管理器返回移动数据网络connectivityManager getAct
  • UIPickerView 与 NSDictionary

    我是一名 NET 程序员 也是 Objective C 的新手 我正在尝试制作一个 UIPickerView 它的作用类似于 NET 下拉列表 用户看到文本列表并选择一个 所选值 即 ID 将在代码中使用 我已经浏览了近半天试图弄清楚这一点