2010-08-21 30 views
1

在我的應用程序中,我有一個工具欄,裏面有一個按鈕。當您按下該按鈕時,會出現一個actionSheet,您可以更改應用程序的語言。我想要在很多視圖中放置此工具欄,但我想使用相同的對象,而不是在我的所有視圖中複製粘貼。所以我用一個nib文件創建一個UIViewController,這個nib文件包含我的工具條。現在,在一個UIView,我這樣做對象不叫好控制器

toolBar *objToolBall = [[toolBar alloc] initWithNibName:@"toolBar" bundle:nil]; 

objToolBall.view.frame = CGRectMake(0, 418, 320, 44); 

[self.view addSubview:objToolBall.view]; 

[objToolBall release]; 

我的問題是,當我在工具欄按下按鈕後,該程序試圖找到我創建對象的文件中的方法「clickButtonLanguage」,而不是在「toolBar.m」。

我如何去「toolBar.m」方法?

+0

那麼你有任何錯誤?你如何設置按鈕的動作?另外檢查這個問題 - http://stackoverflow.com/questions/3538589/unrecognized-selector-error-when-implementing-a-valuechanged-action-from-a-uislid/3538781。你可能在你的代碼有問題,因爲objToolBall被取消分配,並自然無法對任何消息作出迴應... – Vladimir 2010-08-21 22:06:02

+0

我在界面生成器中設置動作,我的UIViewController「toolBar」有她的方法「clickButtonLanguage」 – alex 2010-08-21 22:10:35

+0

好吧,我刪除[objToolBar發佈],它的工作原理,但是當我釋放我的對象? – alex 2010-08-21 22:14:38

回答

0

問題不在於發佈(假設您的原始viewController及其相關視圖仍在附近)。這個版本是有意義的:你已經創建了一個對象,把它的責任交給了你添加的視圖,現在你需要釋放它,所以它不會泄漏。所以不要放棄這條線。

您在原始視圖控制器中獲取方法調用,因爲這與您將其連接到的完全相同。如果你想將它連接到其他IBActions你必須與

[objToolBall addTarget:action:forControlEvents:] 

編程方式添加它們,然後刪除這些對象作爲聽衆匹配調用-removeTarget:action:forControlEvents