1

我对 Xcode 和 Objective C 相当陌生。

我已经成功地在我的一个视图上动态加载了所有 GUI 对象。

现在我想在我的所有或大部分视图上重复相同的动态加载内容..

我在主视图中有一个方法,如下所示:

-(void)loadinfo:(id)sender{
//All dynamically loaded content etc..
}

我目前有像这样调用这个方法的主视图。

[self loadinfo];

所以现在我需要知道(无需将方法复制并粘贴到我的所有视图中)如何将方法从主视图调用到其他视图中?

我希望这一切都有意义。

编辑

我对 PHP 的了解更多,所以如果我要在 php 中做同样的事情,我会创建一个名为 functions.php 的文件并将该文件包含到所有页面中。它是同一个概念吗?

4

2 回答 2

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

对要创建的任意数量的视图执行此操作。

于 2012-07-18T02:49:11.973 回答
0

这个概念与您在 PHP 中使用函数发现的方法不同。在 Objective C 中,人们使用对象。要在对象之间共享行为(您的 PHP 函数,在 Objective C 中称为方法),您需要将该行为插入到类层次结构中的某个位置。

因此,对于您的特定情况,您将在泛型类中实现该loadinfo方法,该泛型类是 的子类NSView,例如MyGenericView。然后,您的类view1view2类都将从该泛型类继承并继承该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标准是一种很好的做法,所以你的类是View1andView2方法是loadInfo.

此外,您可能希望阅读通用 OO 原则和 Objective C的特定方面,以充分利用该语言及其特性。

于 2012-07-18T16:30:45.397 回答