6

UIPageViewControllerXcodeのストーリーボードでを使用したいと思っています。私が見つけた唯一の例は、個別のxibファイルを使用して実装する方法に関するこのチュートリアルでした。UIPageViewcontroller

ただし、このチュートリアルでUIPageViewControllerは、を拡張するクラス内でプログラムによってインスタンス化されますUIViewControllerUIPageViewcontrollerこれにより、ストーリーボードが(それ自体がインスタンスとして)を解釈する方法に変換するのが複雑になります。

Xcodeのストーリーボードを使用して機能を作成する方法についてのヘルプはUIPageViewController大歓迎です。

更新:デフォルトのページコントローラーテンプレートを使用してXcodeで新しいプロジェクトを作成することにより、この問題を解決することができました。絵コンテを使っていて、わかりやすかったです。

4

3 に答える 3

8

更新:デフォルトのページコントローラーテンプレートを使用してxcodeで新しいプロジェクトを作成することにより、この問題を解決することができました。絵コンテを使っていて、わかりやすかったです。

于 2012-04-23T19:09:27.090 に答える
7

XcodeプロジェクトをPageViewControllerとして設定することは、これを実現する1つの方法ですが、既存のストーリーボード内にPageViewControllerを含めたい場合は、これも行うことができます。

PageViewControllerシーンをストーリーボードにドラッグアンドドロップしてセグエを接続すると、そのPageViewControllerにプッシュできます。ただし、ストーリーボードには、PageViewControllerを適切に設定するためのバグがいくつかあるようです。たとえば、デリゲートとデータソースを接続することはできません。

これを回避する簡単な方法は、initメソッドにデリゲート/データソースを接続することです。

- (instancetype) initWithCoder:(NSCoder *)aDecoder
{
    if(self = [super initWithCoder:aDecoder])
    {
        self.delegate = self;
        self.dataSource = self;
    }
    return self;
}

これにより、もちろんデータソースとデリゲートをPageViewControllerにする場合、デリゲートメソッドとデータソースメソッドが適切に呼び出されます。これを設定したら、ビューがロードされるときにViewControllerがあることを確認する必要があります。これは、viewDidLoadのPageViewControllerクラスのsetViewControllersメソッドを使用して行うことができます。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self setViewControllers:@[sweetViewController] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
        NSLog(@"Hooray I set my initial viewcontroller for my page view controller");
    }];
}

PageViewControllerが作成されると、sweetViewControllerで開始され、必要に応じてデータソースとデリゲートメソッドの呼び出しが開始されます。

于 2013-11-26T14:34:46.210 に答える
1

Xcode 7を使用してこれを行う簡単な方法があります。UIPageViewControllerをContainerViewに埋め込んだ状態で、データソースおよびデリゲートとなるViewControllerを1つのストーリーボードシーンに配置します。次に、ViewControllerのprepareForSegueメソッドでUIPageViewControllerをキャプチャします。

例:Swift:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if let identifier = segue.identifier where identifier == "yourPageVCIdentifier"{
        if let pageController = segue.destinationViewController as? UIPageViewController {
            pageController.dataSource = self
            pageController.delegate = self
            self.pageVC = pageController
        }
    }
}
于 2016-01-25T17:23:15.633 に答える