2011-11-12 78 views
2

我正在使用此代碼來隱藏不同視圖控制器中的按鈕,但按鈕在隱藏其他視圖控制器中的按鈕時不會隱藏。如何隱藏不同視圖控制器中的按鈕?

這是我使用隱藏在其他視圖控制器按鈕的代碼:

[self dismissModalViewControllerAnimated:YES]; 

    NSLog(@"Exited"); 

    ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

    [vc.mainbutton1 setHidden:YES]; 

這是爲什麼不工作?

謝謝!

+0

從您對場景的描述中不太清楚。但如果我正確理解你,你需要設置委託。剛剛實例化一個名爲vc的ViewController實例並嘗試[vc.mainbutton1 setHidden:YES]將不起作用。因爲這個新創建的vc不是您想要隱藏mainbutton1的相同ViewController實例。 – user523234

回答

4

在ViewController控制器中取一個BOOL變量,並進行屬性和合成。 並做到這一點。

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
vc.check = YES; 
在視圖控制器的viewDidLoad

寫這個

if(self.check) 
    [mainbutton1 set hidden:YES]; 
+1

如果你喜歡我的回答,將其作爲正確答案 – Tendulkar

+0

難道只是在應用程序啓動時加載它時才隱藏按鈕?我需要它只隱藏按鈕時,按下我的其他視圖控制器... – pixelbitlabs

+0

不明白。詳細解釋 – Tendulkar

0

這是不工作的原因是因爲,即使您已alloc'd並妥善init'd的視圖控制器,實際的元素vc ViewController(包括mainbutton1)尚未加載。

殺手有正確的想法(我正在投票他的想法)。

要麼把一個BOOL屬性mainButton1設置爲隱藏的觀點出現時,或致電[mainButton1 setHidden: YES]你明確地顯示視圖(通過動畫或添加子視圖或其他)。

0

從你的問題聽起來好像你要隱藏在現有的視圖控制器的按鈕,而在你的代碼中創建一個新的

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
[vc.mainbutton1 setHidden:YES]; 

要麼認爲你觀察控制器不是一個您期望或mainbutton1插座未正確連接。您可以通過記錄其內存地址來檢查內存控制器是否是您期望的內存控制器。

NSLog(@"Hid button for view controller %p", vc); 

而且在視圖控制器的viewDidAppear回調

NSLog(@"In viewDidAppear for view controller %p", self); 
1

其他的答案應該工作,除非做同樣的...

看你的代碼,我要猜你正在嘗試隱藏顯示模態視圖的viewController上的按鈕?

如果這是正確的,那麼您正在做的事情將不起作用,因爲您正在創建ViewController的新實例,該實例不是您想要使用的已存在的viewController。

儘管文檔說可以從所呈現的模式視圖調用[self dismissModalViewControllerAnimated:YES];很好,但我傾向於設置一個委託來處理解僱,就像在Apple的utitliy應用程序模板中一樣。

0

看來你想要一個特定的按鈕被隱藏,如果事情已經發生在別的地方。

你可能有點像黑客(但我不介意那麼多)用你的AppDelegate上的變量來控制它。

當「東西」正在發生「別的地方」,這樣做:

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
appDelegate.shouldHideThatOtherButtonLater = YES; 

然後,當你以後創建新的視圖控制器上,你可以使用這個值來確定您的按鈕應該是可見的或不喜歡這樣的:

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
[vc.mainbutton1 setHidden: appDelegate.shouldHideThatOtherButtonLater ]; 

你會在這種情況下,必須通過創建和合成是shouldHideThatOtherButtonLater屬性來準備這個AppDelegate中。

相關問題