1

私は Xcode と Objective C の初心者です。

ビューの 1 つにすべての GUI オブジェクトを動的にロードすることに成功しました。

今、同じ動的にロードされたコンテンツをすべてまたはほとんどのビューに繰り返したい..

メイン ビューに次のようなメソッドがあります。

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

私は現在、このメソッドをそのように呼び出すメインビューを持っています。

[self loadinfo];

したがって、メソッドをすべてのビューにコピーして貼り付けることなく、メインビューから他のビューにメソッドを呼び出す方法を知る必要がありますか?

これがすべて理にかなっていることを願っています。

編集

私は PHP のほうが詳しいので、もし PHP で同じことをするなら、functions.php というファイルを作成し、そのファイルをすべてのページに含めます。それは同じ概念ですか?

4

2 に答える 2

0

概念は、PHPの関数で見られるアプローチとは異なります。Objective Cでは、オブジェクトを操作します。オブジェクト間で動作(PHP関数、Objective Cではメソッドと呼ばれる)を共有するには、その動作をクラス階層のどこかにスロットする必要があります。

したがって、特定のケースでは、たとえばloadinfoのサブクラスであるジェネリッククラスにメソッドを実装します。次に、クラスとクラスの両方がそのジェネリッククラスからサブクラス化し、メソッドを継承します。NSViewMyGenericViewview1view2loadinfo

基本クラスのの実装から逸脱したい場合は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、メソッドはになりますloadInfo

さらに、言語とその機能を最大限に活用するために、一般的なオブジェクト指向の原則とObjectiveCの特定の側面を確認することをお勧めします。

于 2012-07-18T16:30:45.397 に答える
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 に答える