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

iOS IBOutlet UIImageView 失效?別在程式碼重新 alloc/init

     編輯:程式設計綜合問答

錯誤現象

Storyboard/XIB 已連接 @IBOutlet UIImageView *alertImage,但執行 alertImage.hidden = YES 圖片仍顯示,完全不受控制。

錯誤程式碼

alertImage = [[UIImageView alloc] init]; // 重新實例化,斷開 IB 連結
alertImage.hidden = YES;

原因分析

IBOutlet 連結的 View 是由 Nib 載入時實例化的。若在程式碼中再次 alloc/init,指標指向新物件,原本 IB 連結的 View 失去參考,介面上顯示的仍是舊物件。

正確做法

// 直接操作 IB 連結的實例,不要重新建立
alertImage.hidden = YES;
// 或
alertImage.alpha = 0;
// 或移除
[alertImage removeFromSuperview];

除錯技巧

  • 在 viewDidLoad 印出 NSLog(@"%@", alertImage); 確認非 nil
  • 檢查 Storyboard/XIB 右側 Connection Inspector 確認 Outlet 已連結
  • 若用 @IBOutlet weak (Swift) 或 @property (weak) (OC),確認 View 未被過早釋放

記住:IBOutlet 連結的 View 已經存在,直接用屬性存取即可,切勿再次初始化。

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