我想要大量的文本框,这些文本框将启用触控和可编辑。创建对象NSArray
是UItextField
最好的方法吗?如果是,我该如何创建?或建议其他方法来实现这一点。
3 回答
这在很大程度上取决于您要做什么。作为一种NSArray
将您正在使用的所有文本框存储在控制器中的方法(而不是为此目的创建 ivars)是可以的,但您也可以使用UITableView
/ UITableViewController
。
使用表格视图可以让您毫不费力地增加文本框的数量。另一方面,如果您可以保证您的文本框永远不会超过您可以在单个屏幕上显示的内容,那么我认为使用表格视图不会给您带来很大的优势。但是,正如我所说,这在很大程度上取决于你想要做什么。
如果您决定使用数组选项,我建议您改用 an NSDictionary
,以便您可以按名称(或标签,如果您将标签与每个视图相关联)访问每个视图。
另请记住,您可以getViewByTag:
在容器视图上使用该方法来获取对它包含的任何视图的引用,这些视图基于您分配的视图标记。所以,你可以这样做:
//-- creating text box:
UITextField* textBox = ....;
textBox.tag = 1;
[self.view addSbview:textBox];
//-- accessing the text box:
UITextField* textBox = [self.view getViewByTag:1];
从这个意义上说,视图已经充当了文本框的容器,并允许您访问它们。
编辑:
实际上我正在尝试创建一个填字游戏网格
好的,所以,如果它是二维的,我会说排除了表格视图(这并非不可能,但我认为有更简单的方法)。
至于您的问题,这完全取决于您的填字游戏网格的动态程度:它是否总是具有相同数量的行和列?还是可以由用户定义?等等
在第一种情况下,我会选择NSArray
,或者我会简单地使用如上所示的标记(这也会使内存管理自动进行)。
否则,您可能会检查UICollectionView
.
如果您的问题是:哪种数据结构更适合处理填字游戏?那么,看看这个帖子。无论如何,我会说:不要指望你会为这类问题找到现成的解决方案......
如果UITableView
您追求的是我认为您所描述的内容,那么包含可编辑单元格将是执行此操作的最佳方法。Apple 的开发人员网站上有很多示例代码,详细说明了如何最好地使用表格视图来创建显示一系列可编辑文本输入的视图。
最好使用 UI 表格视图,而不是添加“n”个文本字段。