0

最後のページがアクティブなレコードで、前のページが編集できない古いレコードであるデータ入力を処理するために UIPageViewController を使用しています。そのため、他のすべてのページは通常どおりナビゲートできるようにしながら、ユーザーが最後のページから離れたいと思っていることを確認する方法が必要です。

-(BOOL)pageShouldTurn メソッドを実際に使用できれば理想的ですが、それは存在しません。

ページがアンロードされようとしているかどうかを検出し、何らかの条件に基づいてページめくりを停止する方法を知っている人はいますか? デリゲートが設定されていてもトリガーされないように見えるため、ジェスチャ認識メソッドで運がありません。

Michael のおかげで、これを pageViewController に追加しました。これはまさに必要なことを行います。

-(void)pageViewController:(UIPageViewController *)pvc willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
    if ([pvc.viewControllers.lastObject pageIndex] == [self.pageDataSource.allObjects count]) {
        UIAlertView *alertDialog;
        alertDialog = [[UIAlertView alloc]
                       initWithTitle:@"Are You Done?"
                       message:@"Once you leave this page you can't edit this record again"
                       delegate:self
                       cancelButtonTitle:@"OK"
                       otherButtonTitles: nil];
        [alertDialog show];
    }
}

そのため、アラート ボックスは、ページが 1 回だけめくるのを防ぎます。閉じられると、ユーザーはページを変更できます。私のバージョンは、これが最後のページでのみ発生することを確認するためにチェックします.「if」ステートメントを削除して、ページをめくるたびに警告することができますが、それは面倒です.

4

1 に答える 1

0

少なくとも 2 つのオプションがあるように思えます。

まず、- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllersがあります。そこで遷移をキャッチし、古いページを拒否/強制的にリセットできる場合があります。

または、" UIPageViewController" をサブクラス化し、サブクラス化されたコントローラで新しいデリゲート プロトコルを定義し (元の " " メソッドをすべて組み込んで)、独自の " " プロトコル メソッドUIPageViewControllerDelegateを追加することができます。-(BOOL) pageShouldTurn

これらの可能性はどちらも iOS 6 を必要とします。

于 2013-04-13T21:12:21.390 に答える