我在Objective-C中编写iPhone应用程序。我创建了一个类(Foo.m),我希望能够在实例化它的控制器(MainViewController.m)中调用方法。我该怎么做呢?请举一个例子。谢谢!从一个类的控制器调用函数(objective-c)
回答
您可以这样做的一种方法是在您的Foo类中创建一个引用其创建者的属性。你不应该保留此引用,以避免循环引用,但代码看起来像下面
-(void)yourControllerClassMethod{
Foo* f = [[Foo alloc] init];
[f setOwnder:self];
}
在这种情况下,你的Foo类有被设置在控制器类进行新的Foo实例的属性叫老板。现在,从您的Foo类,你可以调用控制器方法是这样的:
所有的[[self owner] callSomeControllerMethod];
首先,我建议你阅读一些设计模式的书籍。如果您的Foo
类是模型,那么为什么您的模型会与控制器进行通信?如果Foo
是一个视图,那么为什么它会与您的控制器进行通信?
现在,虽然我怀疑您的应用程序在构建代码的方式上存在设计问题,但有些方法可以实现此目的。
当MainViewController.m实例化Foo时,你可以通过self
并让Foo保留对它的引用吗?
或者,您应该在Foo中创建一个@protocol
,并且当MainViewController创建Foo时,让MainViewController实现Foo的delegate
。
Foo实际上只是我创建的一个类,它是NSObject的一个子类。它不是模型或控制器。 – 2010-01-14 01:28:56
您应该查看Erik M. Buck和Donald A. Yacktman的Cocoa Design Patterns。这是一本非常出色的书,即使你不熟悉一般的设计模式,它也很容易理解。
这听起来像你想要做的是其他人说什么是一种称为授权的模式。要了解委派如何工作,请查看所有使用它的内置类。任何拥有delegate
属性和UIBlablaDelegate
等协议的用户都在使用委托,您可以对类执行相同的操作。
- 1. 从objectiveC调用javascript函数
- 2. codeignetor调用控制器中的另一个控制器函数
- 3. 从控制器Angular4调用jQuery函数
- 4. 从javascript函数调用控制器
- 5. 从控制器调用javascript函数
- 6. 从控制器调用JQuery函数
- 7. 从子控制器函数调用pushViewController
- 8. 使用另一个类的参数在视图控制器中调用函数
- 9. 如何从angularjs中的另一个控制器调用一个函数?
- 10. 从另一个调用控制器
- 11. 从另一个调用函数的类
- 12. Angularjs,如何从另一个控制器调用控制器
- 13. ASP.Net Core从另一个控制器调用控制器
- 14. 从另一个控制器调用控制器
- 15. 从JavaFX控制器调用另一个类的方法?
- 16. 从另一个控制器调用另一个控制器的功能
- 17. 如何调用一个控制器的功能,从另一个控制器AngularJs
- 18. 在Yii的另一个控制器中调用函数
- 19. 如何调用一个函数控制器里面Opencart的
- 20. 在angularjs中调用另一个控制器的函数
- 21. Symfony的2调用一个函数(temlate渲染)在控制器
- 22. 函数类函数没有返回到控制器类调用函数
- 23. 从一个xib文件移动到一个视图控制器在ObjectiveC
- 24. 不止一次从控制器调用Javascript函数(在Rails中)
- 25. 如何从控制器和从jquery到控制器调用jquery函数
- 26. 从另一个类调用函数,从另一个类
- 27. 从一个函数调用函数到另一个类PHP
- 28. 尝试从另一个视图控制器调用某个函数时出错
- 29. AngularJS控制器是一个函数还是一个类?
- 30. CAKEPHP从另一个控制器调用一个控制器动作
这真的很复杂。听起来好像他只需要首先阅读和学习更多关于Objective-C和Cocoa的知识。 – 2010-01-14 01:23:15