私のアプリには、UIPageViewController
によって制御されるジャーナルがあります。ページのビューコントローラは正常に動作しますが、UIPageViewController
には異常な動作があります。無限スクロールでUIPageViewControllerを作成する
private func journalPage(for date: Date) -> JournalViewController? {
// Create a new view controller and pass suitable data.
guard let journalPage = storyboard?.instantiateViewController(withIdentifier: JournalViewController.storyboardID) as? JournalViewController else {
return nil
}
journalPage.date = date
return journalPage
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let yesterday = calendar.date(byAdding: .day, value: -1, to: self.date) else {
return nil
}
self.date = calendar.startOfDay(for: yesterday)
return journalPage(for: self.date)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let tomorrow = calendar.date(byAdding: .day, value: 1, to: self.date) else {
return nil
}
self.date = calendar.startOfDay(for: tomorrow)
return journalPage(for: self.date)
}
私はUIPageViewController
のdate
を更新して構成されたジャーナルのページを返す:まず、デリゲートメソッドは、(ページビューコントローラは、それ自身のデリゲートがあります)。問題は、重複したページ(同じ日付のページ)が頻繁にあるか、またはページ/日付がスキップされることです。私はthis質問を見つけましたが、私は何か類似のものを実装する方法を見ていません。
私は以前にUIPageViewController
で作業していましたが、これを回避するために常にインデックスを使用していましたが、この場合、開始/終了時刻(文字通り)までスクロールすることができるため、
重複したり欠落した日付を避けるために、新しいページが正しいタイミングで確実に作成されるようにするにはどうすればよいですか?
私はこのアイデアが好きですが、他のカレンダーシステムを使用している場合はこれが壊れますか? – jjatie
iOSを使用すると、カレンダー間で簡単に変換できるため、インデックスにJuilanの日付を使用し、その日付をユーザーのカレンダーにマッピングして表示することができます。 –