電子書籍的なページめくりやフリックでの画面遷移などに使うUIPageViewControllerクラス
があります。
public partial class HogeViewController : UIPageViewController { public HogeViewController(IntPtr handle) : base(handle) { } public override void ViewDidLoad() { base.ViewDidLoad(); var dataSource = new HogeDataSource(); DataSource = dataSource; SetViewControllers(new []{ model.Pages.ElementAt(0) }, UIPageViewControllerNavigationDirection.Forward, true, null); } public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); } }
HogeDataSourceクラスは、UIPageViewControllerDataSourceを継承して、下記のように定義しておきます。
public class HogeDataSource : UIPageViewControllerDataSource { public List<UIViewController> Pages = new List<UIViewController>(); public HogeDataSource() { var redVC = new UIViewController(); redVC.View.BackgroundColor = UIColor.Red; Pages.Add(redVC); var blueVC = new UIViewController(); blueVC.View.BackgroundColor = UIColor.Blue; Pages.Add(blueVC); var yellowVC = new UIViewController(); yellowVC.View.BackgroundColor = UIColor.Yellow; Pages.Add(yellowVC); } public override UIViewController GetPreviousViewController( UIPageViewController pageViewController, UIViewController referenceViewController) { var index = Pages.IndexOf(referenceViewController) - 1; if (index <= 0) { index = (Pages.Count - 1); } return Pages.ElementAt(index); } public override UIViewController GetNextViewController( UIPageViewController pageViewController, UIViewController referenceViewController) { var index = Pages.IndexOf(referenceViewController) + 1; if (index >= Pages.Count) { index = 0; } return Pages.ElementAt(index); } public override nint GetPresentationCount(UIPageViewController pageViewController) { return Pages.Count; } public override nint GetPresentationIndex(UIPageViewController pageViewController) { return 0; } }
ページインジゲータを非表示にする
画面下部にページインジゲータとしてPageControlが表示されていますが、これを消すにはGetPresentationCountメソッド
とGetPresentationIndexメソッド
をオーバーライドするのをやめます。
関連記事
Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。