簡體   English   中英

如何從另一個 class 訪問 superview?

[英]How to access superview from another class?

所以我有一個應用程序,我正在實現一個通用工具欄,它有點像標簽欄+工具欄,並且在我所有的視圖控制器上都有特色。 我有一個自定義工具欄,其中有一些按鈕可以操作我在 App Delegate 中創建的一些導航視圖控制器。 但是,我無法讓這些按鈕工作,下面是我正在使用的按鈕之一的操作方法示例:

    Test_ClassAppDelegate *test_ClassAppDelegate = (Test_ClassAppDelegate*)[[UIApplication sharedApplication] delegate];
[[[test_ClassAppDelegate window] superview] removeFromSuperview];
[[test_ClassAppDelegate window] addSubview:[[test_ClassAppDelegate helpNavController]view]];
[test_ClassAppDelegate release];    

我認為我可能會出錯的主要區域是我要刪除我的超級視圖的第二行。 我什至不確定這是否是 go 關於這樣做的正確方法。 我知道我可以在應用程序委托本身中實現此代碼,但我很好奇是否有從其他地方刪除超級視圖,或者如果其他人看到此代碼有任何問題。 謝謝。

是的,那條線肯定是個問題……

UIWindow 參考

window 是視圖層次結構中的根視圖。

因此, window 沒有superview ,並且您要求windowsuperview將自身從其superview中刪除。 這不起作用的原因與它如此繞口令的原因相同——它只是沒有意義。

此外, -removeFromSuperview不會刪除超級視圖,它會從其超級視圖刪除您發送-removeFromSuperview視圖。 你看得到差別嗎?

聽起來您想根據用戶選擇更改根視圖 controller。 如果是這種情況,請參閱我對這個問題的回答,以及其他許多關於 SO 的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM