我需要在VisualStudio2017 for mac中使用Xamarin实现一个简单的UIPageViewController。
正如文档在https://developer.xamarin.com/api/type/MonoTouch.UIKit.UIPageViewController/中说的那样,我需要使用来自UIPageViewControllerDataSource委托的UIPageViewControllerDataSource.GetNextViewController和UIPageViewControllerDataSource.GetPreviousViewController连接上一个视图和下一个视图,但我不清楚应该在哪里这样做,我也不清楚如何使用故事板设计器来实现这一点。
使用UIPageViewController的想法是在进入另一个视图之前添加一个4页的快速教程,在UIPageViewController的最后一个视图中将有一个按钮将段段调用到下一页。
发布于 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()也意味着您想要在向后导航时显示哪个控制器。这是我的样本:
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);
https://stackoverflow.com/questions/49310798
复制相似问题