2015-11-23 47 views
0

我正試圖做一些涉及在蘋果類中覆蓋方法的東西。更具體地說,我試圖修改當用戶點擊搜索欄時將UISearchController的取消按鈕放在屏幕上的動畫。就目前而言,我的uisearchbar代替了我的導航項目的titleView。Swift類中的下劃線屬性?

但是我有右邊的UIBarButton。當我點擊搜索欄。取消按鈕從搜索欄的右側邊緣滑入,通過右側欄按鈕滑動,右側欄按鈕項不會移動。我希望取消按鈕從屏幕邊緣滑入。

爲此,我開始研究如何子類化搜索欄,以便我可以更改動畫。在檢查控制檯中的內存時,我注意到幾乎所有變量都以下劃線(_cancelBarButtonItem)開頭,更重要的是它們都不可接受。

我的問題是:那些變量是什麼,我可以以某種方式訪問​​它們,否則我可以覆蓋它們嗎?

回答

2
  1. 這些是Apple在其類中使用的私有變量(您可以使用private關鍵字聲明自己的變量)。這只是一個在名稱前面使用下劃線的約定。
  2. 可以使用鍵值編碼(KVC)來訪問它們。在你的情況下,要獲得該變量,你需要執行以下操作:webView.valueForKey("_cancelBarButtonItem")
  3. 如果你想設置它們,你可以這樣做:webView.setValue(value, forKey: "_cancelBarButtonItem")其中value是你想要設置的值。

注:蘋果公司強烈反對訪問他們的私有變量,而且這樣做可以讓你的應用程序被拒絕