2011-06-26 122 views
0

我有一個隱藏按鈕的父視圖,以及取消隱藏該按鈕的方法。該父視圖有一個模式視圖,我需要調用隱藏該按鈕的方法。從其模態視圖隱藏父視圖中的按鈕?

ParentViewController.m

- (void)unhideButton { 
    myButton.hidden = NO; 
    NSLog(@"Unhide"); 
} 

ModalViewController.m

- (void)levelComplete { 
    ParentViewController *controller = [[ParentViewController] alloc] init]; 
    [controller unhideButton]; 
    [controller release]; 
} 

的的NSLog消息Unhide成功沒有顯示在控制檯中,但是當我關閉該模態視圖控制器,所述按鈕仍然隱藏。我究竟做錯了什麼?

+0

你在哪裏隱藏按鈕?這可能再次被調用。 – PengOne

+0

我把它設置爲隱藏在界面生成器中。 – user813031

回答

0

爲什麼ModalViewController,大概是由ParentViewController實例提供的,實例化了一個新的 ParentViewController?我認爲你需要做的是在創建它時將對現有的ParentViewController的引用傳遞給ModalViewController,然後在ModalViewController中它可以在父按鈕上設置隱藏屬性。

如果你想遵循良好的設計實踐,ParentViewController需要將其按鈕的管理委託給ModalViewController。 ParentViewController將遵循一個簡單的協議,公開該按鈕,並將其自身設置爲ModalViewController的代表,然後再呈現它。

+0

我該怎麼做? – user813031

+0

閱讀[可可核心能力指南](http://developer.apple.com/library/ios/#documentation/general/conceptual/DevPedia-CocoaCore/Delegation.html),它將帶您瞭解授權的概念,它如何在可可中使用,以及如何在你的對象中實現它。 – RyanR

+0

代表團是貫穿可可的兩種主要模式之一。這是掌握mac和iphone編程的關鍵。確保你真的瞭解它。 – vikingosegundo

1

模態視圖控制器具有對使用parentViewController屬性的視圖控制器的自動引用。所以你可以直接說,

[self.parentViewController unhideButton]; 

levelComplete方法。

但是創建一個新實例並調用它的方法不會影響像Ryan說的原始實例。

+0

這是你正在尋找的答案。 – Dad

+0

完美!謝謝。 – user813031

相關問題