我是Xcode和Objective C的新手。
我已经成功地在我的一个视图上加载了所有GUI对象..
现在我想在我的全部或大部分视图上重复相同的动态加载内容..
我在主视图中有一个像这样的方法:
-(void)loadinfo:(id)sender{
//All dynamically loaded content etc..
}
我目前有主视图这样调用这个方法。
[self loadinfo];
所以现在我需要知道(没有将方法复制并粘贴到我的所有视图中)如何将方法从主视图调用到其他视图中?
我希望这一切都有道理。
修改
我对PHP更了解,所以如果我在php中做同样的事情,我会创建一个名为functions.php的文件,并将该文件包含在所有页面中。这是相同的概念吗?
答案 0 :(得分:0)
您应该为包含所有动态加载的UI内容的视图创建子类。所以如果你有:
@interface MyCustomView : UIViewController
{
}
@property (strong, nonatomic) UIView *aView;
-(void)someMethod;
@end
您可以创建一个继承所有属性,方法等的子类:
@interface FirstView : MyCustomView
{
}
//all properties and methods of MyCustomView are inherited
@end
对要创建的任意数量的视图执行此操作。
答案 1 :(得分:0)
这个概念与您在PHP中使用函数找到的方法不同。在Objective C中,一个用于对象。要在对象之间共享行为(您的PHP函数,在Objective C中称为方法),您需要将该行为插入到类层次结构中。
因此,对于您的具体情况,您将在通用类中实现loadinfo
方法,该类是NSView
的子类,比如说MyGenericView
。然后,您的view1
和view2
类将从该泛型类继承,并继承loadinfo
方法。
如果您想转移基类中loadinfo
的实现,可以通过执行(在view1或view2中)部分覆盖它:
- (void) loadview {
[super loadview]; // perform the default implementation
[self doSomethingDifferint]; // perform subclass specific stuff
}
......或:
- (void) loadview {
[self doSomethingDifferint]; // perform subclass specific stuff
[super loadview]; // perform the default implementation
}
...或完全覆盖:
- (void) loadview {
[self doSomethingCompletelyDifferent]; // perform subclass specific stuff
}
请注意:在Objective C中命名类和方法时遵循CamelCase标准是一种好习惯,因此您的类将是View1
和View2
,方法将是{{1 }}
此外,您可能希望read up on generic OO principles and Objective C的具体方面充分利用语言及其功能。