Я создал UIPageViewController с массивом данных и работает правильно. Но при прокручивании вправо для переадресации вызова методов After и Before.
Мои коды здесь:Вызов обоих методов After и Before в UIPageViewController при плавании для пересылки в Swift 3 iOS
import UIKit
class MainPageViewController: UIPageViewController,UIPageViewControllerDataSource {
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
initUPageVC(idx:0,isAnimate:false,direction: UIPageViewControllerNavigationDirection.forward)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
{
//PRIVIOUS
let pageContent: MainPageContentViewController = viewController as! MainPageContentViewController
var index = pageContent.index
if ((index == 0) || (index == NSNotFound))
{
return nil
}
index -= 1;
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "updateMenuBarItemSelectedNotif"), object: index)
return getViewControllerAtIndex(index)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
//NEXT
let pageContent: MainPageContentViewController = viewController as! MainPageContentViewController
print("now n",pageContent.index)
var index = pageContent.index
if (index == NSNotFound)
{
return nil;
}
index += 1;
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "updateMenuBarItemSelectedNotif"), object: index)
return getViewControllerAtIndex(index)
}
func getViewControllerAtIndex(_ index: Int) -> MainPageContentViewController
{
// Create a new view controller and pass suitable data.
let destinationVC = self.storyboard?.instantiateViewController(withIdentifier: "MainPageContentVCID") as! MainPageContentViewController
destinationVC.index = index
return destinationVC
}
func initUPageVC(idx:Int,isAnimate:Bool,direction:UIPageViewControllerNavigationDirection) {
self.setViewControllers(
[getViewControllerAtIndex(idx)],
direction: direction,
animated: isAnimate, completion: nil)
let destinationVC = self.storyboard?.instantiateViewController(withIdentifier: "MainPageContentVCID") as! MainPageContentViewController
destinationVC.index = idx
}
И ребенок код здесь VC:
import UIKit
class MainPageContentViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
@IBOutlet var tableView: UITableView!
var dataSource : Array<Item>!
var index:Int = 0
var myStr:String!
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "ItemCellNib", bundle: nil), forCellReuseIdentifier: "ItemCellIdentifier")
prepareData()
}
//MARK: Table View
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCellIdentifier", for: indexPath) as! ItemTableViewCell
let obj = dataSource[indexPath.row]
cell.itemImage.image = UIImage(named:obj.imageName)
cell.selectionStyle = UITableViewCellSelectionStyle.none
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let obj = dataSource[indexPath.row]
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "itemHasClickedNotif"), object: obj)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 197
}
func prepareData(){
let obj0 = Item()
let obj1 = Item()
let obj2 = Item()
let obj3 = Item()
if index == 0 {
obj0.ID = 0
obj0.imageName = "dog"
obj1.ID = 1
obj1.imageName = "dog"
obj2.ID = 2
obj2.imageName = "dog"
obj3.ID = 3
obj3.imageName = "dog"
}else if index==1{
obj0.ID = 0
obj0.imageName = "cat"
obj1.ID = 1
obj1.imageName = "cat"
obj2.ID = 2
obj2.imageName = "cat"
obj3.ID = 3
obj3.imageName = "cat"
}else{
obj0.ID = 0
obj0.imageName = "lion"
obj1.ID = 1
obj1.imageName = "lion"
obj2.ID = 2
obj2.imageName = "lion"
obj3.ID = 3
obj3.imageName = "lion"
}
dataSource = [obj0,obj1,obj2,obj3]
tableView.setContentOffset(CGPoint.zero, animated: false)
tableView.reloadData()
}
}
Пожалуйста, помогите мне решить эту проблему Спасибо.
Если мой ответ верен и вам помог, пожалуйста, примите его (галочка). – matt