3

iOS5用に開発してストーリーボードを作成したいのですが...ストーリーボードにUIViewControllerを使用してUIViewを作成しました。他にもたくさんのUIButtonとラベルを追加し、VCへのアウトレットを作成しました。

このビューをviewcontrollerで1つの親ビューで3回使用したいと思います。どうしてそれは可能ですか?「他の多くのUIButtonとラベル」をコピーしたくない...

たぶん、別のXIBのストーリーボードからこのビューを作成する必要がありますか?ストーリーボードでXIBをどのように使用しますか?

アップデート:

ありがとう、Juzzz-あなたのソリューションは完璧に機能します:

4

2 に答える 2

4

2つのカスタムviewControllerを作成する必要があります(ストーリーボードのビューごとに1つ。例:

@interface GraphCollectionViewController : UIViewController

@interface GraphViewController : UIViewController

それらを接続するには、UIViewController包含と呼ばれるものを使用できます。

GraphCollectionViewControllerに対して、UIView用に3つのアウトレットを作成します。次に、GraphViewController(または必要な配列)の3つのプロパティを作成し、ロードされたビューでそれらを初期化します。

@property (strong, nonatomic) IBOutlet UIView *topView;
@property (strong, nonatomic) IBOutlet UIView *middleView;
@property (strong, nonatomic) IBOutlet UIView *bottomView;

@property (strong, nonatomic) GraphViewController *topGraphViewController;
@property (strong, nonatomic) GraphViewController *middleGraphViewController;
@property (strong, nonatomic) GraphViewController *bottomGraphViewController;

...

//top graph
    self.topGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
    self.topGraphViewController.view.frame = self.topView.bounds; //set frame the same

    [self.view addSubview:self.topGraphViewController.view];
    [self addChildViewController:self.topGraphViewController];
    [self.topGraphViewController didMoveToParentViewController:self];

//middle graph
    self.middleGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
    self.middleGraphViewController.view.frame = self.middleView.bounds; //set frame the same

    [self.view addSubview:self.middleGraphViewController.view];
    [self addChildViewController:self.middleGraphViewController];
    [self.middleGraphViewController didMoveToParentViewController:self];

//bottom graph
    self.bottomGraphViewController = [storyboard instantiateViewControllerWithIdentifier:@"GraphViewController"]; //init with view from storyboard
    self.bottomGraphViewController.view.frame = self.bottomView.bounds; //set frame the same

    [self.view addSubview:self.bottomGraphViewController.view];
    [self addChildViewController:self.bottomGraphViewController];
    [self.bottomGraphViewController didMoveToParentViewController:self];

私はあなたがポイントを得ると思います。この例をより深く理解するために。

于 2012-04-13T22:09:27.080 に答える
1

(独自の.h、.mファイルを使用して)新しいビュークラスを作成し、これを自分で作成したViewControllerに基づいて作成できます。

だからコードに関しては:

@interface ViewController : UIViewController

上記が他の場所で使用したい元のViewControllerであるとしましょう。ボタンやラベルなどが入っています。

新しいビュークラスを作成するときは、次のようにUIViewControllerクラスではなく、独自に作成します。

@interface MyNewController : ViewController

MyNewControllerは前に作成したViewControllerに基づいているので、ボタンやラベルなども作成する必要があります。

編集:ストーリーボードでビューの基本クラスを変更する必要がある場合もあります。変更するビューをクリックし、右側の属性ウィンドウを確認します。[カスタムクラス]で独自のコントローラー(この場合はViewController)を選択します。

于 2012-04-13T21:42:30.660 に答える