【发布时间】:2016-05-21 01:25:09
【问题描述】:
情况:我想从数据条目列表导航回我的 PageViewController。
before 和 previous 函数起作用
func pageViewController(pageViewController: UIPageViewController,
viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
if ((viewController as! LocationViewController).mLocationIndex > 0){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("LocationViewController") as! LocationViewController
vc.mLocationIndex = (viewController as! LocationViewController).mLocationIndex - 1
return vc
}
return nil
}
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let locCount = DataManager.sharedInstance.getLocationCount()
if ((viewController as! LocationViewController).mLocationIndex < locCount - 1){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("LocationViewController") as! LocationViewController
vc.mLocationIndex = (viewController as! LocationViewController).mLocationIndex + 1
return vc
}
return nil
}
问题:如果我在 viewDidLoad() 中从UIPageViewController 设置UIViewController(Location),我可以通过按钮从UIPageViewController 转到我的UITableView,我就是能够导航回来,一切正常。但是我想删除我的UITableView 中的位置,当我删除我想要返回的位置时(每个位置后面都是CoreData 中的数据),它会崩溃,因为CoreData 中的数据已经消失了。
我尝试在 viewWillAppear(animated: Bool) 中设置 UIViewController(Location)。现在我可以删除条目,向后导航并拥有自己的集合 UIViewController(Location) BUT 我有 - 如果我滚动到上一个视图,虽然@ 987654331@return nil...这怎么可能?
第一个viewDidLoad()版本的代码sn-p:
class MainPageViewController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
let dM = DataManager.sharedInstance
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("LocationViewController") as! LocationViewController
dM.mActualLocationIndex = 0
// check if the index is too big (deleted data)
if (dM.mActualLocationIndex < dM.getLocationCount()){
vc.mLocationIndex = dM.mActualLocationIndex
} else {
vc.mLocationIndex = 0
dM.mActualLocationIndex = 0
}
vc.mLocationIndex = 0
setViewControllers([vc], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
}
override func viewWillAppear(animated: Bool) {
}
【问题讨论】:
标签: ios swift uipageviewcontroller