2012-10-20 54 views
-1

這有點解釋爲什麼我想要實現這種設計。子視圖調用屬性中的UIButton

但我想問的問題是:如果我有一個視圖,它的控制器是ControllerA,現在我想在我的視圖中添加一個子視圖,假設View1。並且該子視圖View1包含一個按鈕,我將IBAction指向ControllerA。

但我發現這個View1按鈕不能改變原始視圖對象的一些屬性,如UIImageview.hidden

子視圖中的按鈕不能改變超視圖內的東西嗎?或者我需要設置其他的東西來完成這項任務。

+0

**這與Xcode **無關(除非你想將子視圖添加到Xcode的視圖層次本身,我懷疑它)。 – 2012-10-20 09:41:33

+0

我只是首先選擇ios5,我不知道爲什麼其他人會顯示...... – user1713790

+0

@ user1713790您是否確實已確認當您有子視圖上的按鈕時,您已將其正確鏈接到IBAction?如果您在ControllerA中調用相同的IBAction,那麼在兩種情況下都會調用它們是不可思議的,但在一種情況下工作,而不是在另一種情況下工作。這個不成立。所以請確認(a)在兩種情況下都要調用IBAction; (b)如果問題依然存在,請描述一下你的代碼(單獨的UIView類?或者同一個視圖控制器中的所有東西?)等等。也許向我們展示一些代碼。 – Rob

回答

0

很難理解你在說什麼,但它聽起來像你試圖訪問UIView之外的UIView實例的子視圖。如果它不是一個UIView子類,並且您有一個對該子視圖的ivar/property引用,則可以嘗試給它一個標籤並以這種方式訪問​​它。

例如:

UIView *topLevelView = [[UIView alloc] init]; 
UIView *viewA = [[UIView alloc] init]; 
UIView *otherView = [[UIView alloc] init]; 
otherView.tag = 5; 
[topLevelView addSubview:viewA]; 
[topLevelView addSubview:otherView]; 


UIView *viewASubview = [[UIView alloc] init]; 
[viewA addSubview:viewASubview]; 


UIView *referenceToOtherView = [viewASubview.superview.superview viewWithTag:5]; 
UIView *anotherReferenceToOtherView = [topLevelView viewWithTag:5]; 
+0

我想添加在子視圖A中使用按鈕來更改A的超級視圖內按鈕的屬性。並且這兩個視圖都在同一個控制器下 – user1713790

+0

我給你的答案解釋瞭如何使用標籤來完成該操作。它是一個按鈕的事實是微不足道的,因爲它只是一個視圖。連接一個IBAction來執行此操作。你只需要使用'superview'。看我的編輯。 – Dima

0

我猜你嘗試添加UIView這也是View(UIViewController一個subview)一button內。

正如你所說,只要你試圖訪問你的Button屬性,那麼你不能做同樣的事情。

發生這種情況是因爲我們通過XIb創建任何東西,如果我們想要訪問UIControl或任何其他東西,那麼我們已經在源代碼中創建了引用。因此,您將通過Xcode的引用連接UIButton。 正如我在下面的圖片。

Try in this Way

我希望我有你的觀點。它會對你有所幫助

+0

感謝您的回覆,但這不是我的情況。我想在子視圖A中使用按鈕來更改A的超級視圖中按鈕B的屬性。如果我使用A的超級視圖內的其他按鈕C來更改按鈕的屬性,它將起作用;但是,子視圖A中的按鈕無法正常工作 – user1713790