2012-01-20 55 views
0

我知道insertSubView會在iPhone應用程序的View層次結構的某個索引處插入一個新視圖。插入索引值混淆SubSubView

我也明白,

insertSubView atIndex:[self.view子視圖]計數]

將在最高層插入子視圖,以便它是唯一可見的視圖。這與addSubview類似。

但是,我仍然是一個新手,我對「視圖」中包含的內容有點困惑。

我有一個根控制器,在它的視圖中有3個按鈕。

root view

我與addSubView玩弄,以瞭解它是如何工作的,當我做了insertSubview atIndex:1,我有以下幾點:

index 1

它看起來像我添加的新視圖是在按鈕1之後,但在按鈕2和按鈕3之前添加的。如果我將索引更改爲2,則只有按鈕3出現,因此看起來新視圖被放置在按鈕1和2之後,但是之前3.

這是爲什麼?爲什麼按鈕有單獨的子視圖索引?我原以爲包含在我的根控制器視圖中的所有內容都將歸入一個視圖。他們有點分開嗎?

回答

1

你看到的是完全正確的。先添加button1,然後添加button2,然後添加button3。因此來看堆棧是:

BUTTON3 - >指數2
BUTTON2 - >索引1
Button1的 - >索引0

現在,如果你這樣做:insertSubview:atIndex:1,你:

BUTTON3 - >指數3
BUTTON2 - >索引2
AnotherView - >索引1
button1的 - >索引0

因此,只有button2和button3可見,因爲button1被隱藏,因爲「AnotherView」重疊其框架。


Similiarly如果你這樣做:insertSubview:atIndex:2,您可以:

BUTTON3 - >指數3
AnotherView - >指數2
BUTTON2 - >索引1
Button1的 - >指數0

現在只有button3是可見的,因爲button1和button2都隱藏了,因爲「AnotherView」與他們的框架重疊。

還有一件事你必須考慮的是,z-index本身並不能決定哪些視圖可見。只有頂視圖有一個框架覆蓋下面的視圖,下面的視圖纔會隱藏。從你發佈的圖片看來,按鈕的框架似乎足以顯示文字,並且不佔用整個窗口的框架。

+0

感謝您的回覆。但爲什麼按鈕分開視圖?整個「根視圖」(第一幅圖像)不會是一個單一視圖嗎?或者視圖中的每個單獨項目都是單獨的索引? 有沒有辦法將所有按鈕與視圖一起分組,以便它被視爲單個視圖索引? – steve8918

+0

我不知道有任何意見分組。然而,你可以使用一個小竅門,使用一個簡單的'View'作爲所有按鈕的持有者。你將所有你想要分組的按鈕添加到'holderView'中,並將'holderView'添加到根視圖。現在,如果你想隱藏或顯示按鈕,你可以簡單地隱藏/顯示'holderView' – aqs