尽管我是用 Objective C 编写的,但我的大部分代码仍然是用过程风格编写的。但是,现在我想做一些这种方法不起作用的事情。所以我需要一些关于如何同时处理屏幕上不确定数量的对象的建议。我确定这个问题已经解决了,我只是无法找出方法。
我有一堆游戏,我在屏幕上放两张或四张图片,然后用户与图片进行交互。当他们完成一个页面时,他们会滑动到下一个页面,然后我使用过渡将图片滑出屏幕。我可以控制图片的移动,因为在创建它们时我将它们命名self.picture_1
为self.picture_2
. 移动方法知道它们,即使该方法没有创建它们。
现在假设我想在屏幕上显示不确定数量的图片。我不能打电话给他们self.picture_1
。因为self.picture_n
ObjectiveC不会让你动态创建变量名。但是我仍然需要以未创建它们的方法移动它们。
我可以使用两种技术使它工作,这两种技术似乎都不理想。首先,我查看屏幕上的所有对象,然后对我想要定位的对象做一些事情。注意:图片在按钮中。
for ( id subview in self.parentView.subviews ) {
if ( [subview isKindOfClass:[UIButton class]] ) {
UIButton *pictureButton = subview;
for (NSUInteger i=0; i<self.totalItems; i++) {
NSUInteger row = (i % 2) + 1;
NSUInteger column = (i/2) + 1;
NSString *pictureTitle = [NSString stringWithFormat:@"pictureR%iC%i", row, column];
if ( [pictureButton.titleLabel.text isEqualToString:pictureTitle] ) [pictureButton removeFromSuperview];
}
}
}
这适用于将它们从视图中删除,但是当我尝试让图片滑出屏幕时会变得很麻烦。
第二种方法是创建一个数组来保存创建时的图片对象。我一直在玩这样的东西。
self.gridImages = [NSMutableArray arrayWithCapacity:4];
for (NSUInteger i = 0; i < itemsOnScreen; i++) {
Word *word = [wordListArray objectAtIndex:i];
self.gridImages[i] = word.image;
}
然后用我循环遍历数组的图片做一些事情。
for (NSUInteger i = 0; i < itemsOnScreen; i++) {
Picture *picture = self.gridImages[i];
// do something with picture
}
这两种方法似乎都不“正确”,所以我想知道是否有一种首选方法来操作屏幕上不确定数量的对象?