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];
    }
}

所以警告框只停止翻页一次。当它被关闭时,用户可以更改页面。我的版本检查以确保这只发生在最后一页,您可以删除“if”语句并在每次翻页时发出警报,但这会很烦人。

4

1 回答 1

0

在我看来,至少有两种选择。

第一,你有- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers。您可能能够在那里捕捉到转换并拒绝/强制重置旧页面。

或者,您现在可以子类化 " UIPageViewController" 并且在子类化控制器中,您可以定义一个新的委托协议(包含所有原始的UIPageViewControllerDelegate" 方法),并且可以添加自己的 " -(BOOL) pageShouldTurn" 协议方法。

这两种可能性都需要 iOS 6。

于 2013-04-13T21:12:21.390 回答