1

私はこれを行う方法についての情報をあちこち探してきましたが、私が理解できるものは何も見つかりませんでした。

基本的に、(ViewController.xibから)サブビューのそのビューの上に別のXIBファイルをロードできるようにしたいです。この新しいサブビューは操作可能である必要があるため、マルチタッチジェスチャやスワイプジェスチャで移動できます。

ViewControllerから「view」オブジェクトを追加してから、他のXIBをそのサブビューオブジェクトにロードしようとしました。

うまくいけば、誰かが助けることができます。ありがとう!

4

3 に答える 3

5

ViewController内の他のクラスのインスタンスを作成し、それをサブビューとして現在のView Controllerに追加することで、目的を達成できるはずです。

MyOtherViewController *movc = [[MyOtherViewController alloc] init];
[self.view addSubview:movc.view];

ジェスチャの処理については、MyOtherViewControllerクラスで処理するか、コンテナビューを作成してで処理することができますViewController。それらはサブビューであり、すべての動きはそれらのスーパービューに関連している必要があることを忘れないでください。

于 2012-09-29T18:55:30.323 に答える
2

上記のコードはほぼ正しいですが、

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];

そのはず

UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil] objectAtIndex:0];

ビューコントローラでは、簡単に追加できます

[self.view addSubview:newView];
于 2013-08-16T07:20:27.813 に答える
0

xibを作成することにより、xibでサブビューを定義できます([ファイル] [新規...]、[ユーザーインターフェイス]、[ビュー]の順に選択します)。

このビューは次のようにロードできます。

UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];

その新しいビューは、他のサブビューと同じように扱うことができます。

// assign it to a property
@property (strong, non atomic) UIView *viewFromXib;
@sythesize viewFromXib=_viewFromXib;

self.viewFromXib = newView;

// add it to your hierarchy
self.viewFromXib.frame = CGRectMake( /* this will start out 0,0 the size from the xib */ );
[self.view addSubview:self.viewFromXib];

// add gesture recognizer
UITapGestureRecognizer *tapGR =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.viewFromXib addGestureRecognizer:tapGR];

... 等々

于 2012-09-29T19:45:38.340 に答える