首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS UIScrollView 子視圖訪問:正確使用 tag 定位特定視圖

     編輯:程式設計綜合問答

問題場景

遍歷 [self subviews] 並根據索引 index 修改視圖屬性(如 alpha、交互狀態)時,條件判斷 if (i == index) 不生效;移除判斷後卻能正常修改所有視圖。

原因分析

subviews 的順序不一定與添加順序一致,且索引 i 只是遍歷計數器,不代表視圖的唯一標識。當視圖層級變化或存在隱藏視圖時,索引對應關係會失效。

最佳實踐:使用 tag 標識視圖

// 添加視圖時設置 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: 實現穩健的視圖訪問。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved