【发布时间】:2020-06-17 15:20:59
【问题描述】:
我一直在尝试编写具有从 0 到 3 的 for 循环的代码,该循环使用它们的行号更改 3 个不同的 UIImageView。
第一个被称为“c1”,第二个被称为“c2”,第三个被称为“c3”等等。
这些 UIImageView 已经在我的 .h 文件中定义,并且可以在我的 .m 文件中访问。我之前只是简单地通过变量调用它,但是我需要遍历 for 循环以使过程更流畅,而不是硬编码一堆行。
当前代码:
for (int i = 0; i < 3; i++){
NSString *id = [NSString stringWithFormat:@"c%i" , i];
UIImageView *imageViewInLoop = id;
[self.imageViewInLoop setImage:[UIImage imageNamed:@"defaultphoto.jpg"]];
}
除了第三行关于使用字符串初始化 UIImageView 的警告之外,此代码没有出现任何错误。代码执行,但图像没有改变,并且没有任何内容打印到控制台。回复之前请注意图片和变量是正确的,因为我之前已经手动成功了。
【问题讨论】:
-
你能添加正确的代码吗?您添加的代码不正确。 (在此代码中,您将 NSString 分配给 UIImageView,然后调用 setImage: 方法)
-
对不起。但可能是我错误地表达了我的观点。创建后不要使用'imageViewInLoop'(UIImageView *imageViewInLoop 是局部变量,但在 [self.imageViewInLoop setImage:[UIImage imageNamed:@"defaultphoto.jpg"]]; 你使用一个属性,它是不同的变量) .要了解如何找到合适的 UIImageView,我们应该知道如何存储它们,或者它们在界面中的呈现方式。什么是行号?是表格,或者如果 UIImageViews 带有 UILabels,则只是垂直布局?
-
同时将 NSString 分配给 UIImageView 不是一个好主意。这里的代码应该是这样的: UIImageView imageViewInLoop = [self getImageViewById:id];其中 getImageViewById: 返回 UIImageView
-
UIImageView 只是在屏幕上直接排序,没什么复杂的。只有 1 行,我只需要快速设置 3 个 UIImageViews,顺序并不特别或与它真正相关。
-
我在 .h 文件中创建了 UIImageView,如下所示:@property (strong, nonatomic) IBOutlet UIImageView *c1;
标签: ios objective-c xcode uiimageview