2010-08-21 27 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