gpt4 book ai didi

iphone - 带有 NSDictionary 的 UIPickerView

转载 作者:太空狗 更新时间:2023-10-30 03:28:41 25 4
gpt4 key购买 nike

我是一名 .NET 程序员,刚接触 Objective C。

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

我已经浏览了将近半天,试图解决这个问题。我可以添加一个带有字符串列表的常规 PickerView,带有多个组件的选择器 View 和带有依赖组件的选择器 View ,这些似乎都无法回答我的查询。

请帮忙。

最佳答案

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

假设自定义对象是具有属性 planetId (int) 和 planetName (NSString) 的 Planet。创建一个名为 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];

关于iphone - 带有 NSDictionary 的 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com