首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPageViewController Xamarin

UIPageViewController Xamarin
EN

Stack Overflow用户
提问于 2018-03-15 23:16:47
回答 1查看 1.3K关注 0票数 0

我需要在VisualStudio2017 for mac中使用Xamarin实现一个简单的UIPageViewController。

正如文档在https://developer.xamarin.com/api/type/MonoTouch.UIKit.UIPageViewController/中说的那样,我需要使用来自UIPageViewControllerDataSource委托的UIPageViewControllerDataSource.GetNextViewControllerUIPageViewControllerDataSource.GetPreviousViewController连接上一个视图和下一个视图,但我不清楚应该在哪里这样做,我也不清楚如何使用故事板设计器来实现这一点。

使用UIPageViewController的想法是在进入另一个视图之前添加一个4页的快速教程,在UIPageViewController的最后一个视图中将有一个按钮将段段调用到下一页。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-16 03:25:18

您可以在故事板中添加一个UIPageViewController。在“属性”窗口=> Widget(导航、过渡样式、脊柱位置)中配置样式。

然后可以在相应的CS文件中添加DataSource。使用: UIViewController添加第一个显示的SetViewControllers(new UIViewController[] { viewController }, UIPageViewControllerNavigationDirection.Forward, true, null);。请注意,当您将Spine Location设置为Mid时,这个数组应该至少包含两个UIViewControllers。如果没有,只添加一个。

但我不清楚我应该在哪里去做,也不知道用故事板设计师在哪里做。

当您想导航到下一页时,事件GetNextViewController()将触发(即第一页-第二页)。您应该返回在此事件中将显示的控制器。同时,GetPreviousViewController()也意味着您想要在向后导航时显示哪个控制器。这是我的样本:

代码语言:javascript
复制
public class MyPageViewDataSource : UIPageViewControllerDataSource
{

    List<UIViewController> pageList;
    public MyPageViewDataSource(List<UIViewController> pages)
    {
        pageList = pages;
    }

    public override UIViewController GetNextViewController(UIPageViewController pageViewController, UIViewController referenceViewController)
    {           
        var index = pageList.IndexOf(referenceViewController);
        if (index < pageList.Count - 1)
        {
            return pageList[++index];
        }
        else
        {
            //when navigate to the last page, return null to disable navigate to next.
            return null;
        }
    }

    public override UIViewController GetPreviousViewController(UIPageViewController pageViewController, UIViewController referenceViewController)
    {
        var index = pageList.IndexOf(referenceViewController);
        if (index == 0)
        {
            //when navigate to the first page, return null to disable navigate to previous.
            return null;
        }
        else
        {
            return pageList[index - 1];
        }
    }
}

最后,将UIPageViewController的DataSource设置为:DataSource = new MyPageViewDataSource(pageList);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49310798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档