遍歷 [self subviews] 並根據索引 index 修改視圖屬性(如 alpha、交互狀態)時,條件判斷 if (i == index) 不生效;移除判斷後卻能正常修改所有視圖。
subviews 的順序不一定與添加順序一致,且索引 i 只是遍歷計數器,不代表視圖的唯一標識。當視圖層級變化或存在隱藏視圖時,索引對應關係會失效。
// 添加視圖時設置 tag
for (int i = 1; i <= 4; i++) {
UIView *myView = [[UIView alloc] initWithFrame:...];
myView.tag = i;
[scrollView addSubview:myView];
}
// 通過 tag 精確查找
UIView *targetView = [scrollView viewWithTag:index];
if (targetView) {
targetView.alpha = 0.3;
targetView.userInteractionEnabled = NO;
}
或遍歷時匹配 tag:
for (UIView *view in [scrollView subviews]) {
if (view.tag == index) {
view.alpha = 0.3;
view.userInteractionEnabled = NO;
break;
}
}
避免依賴 subviews 索引定位視圖,改用 tag 或 viewWithTag: 實現穩健的視圖訪問。