protokolüne uymuyor Xcode 6 GM kullanıyorum. Bu page view controller tutorial'u ancak Swift yerine Objective-C'yi uygulamak için çalışıyorum ama beklendiği gibi çalışmıyor.Swift: 'ViewController' yazın 'UIPageViewControllerDataSource'
Aslında bir başkasının aynı işi yaptığı bir git repo bulmayı başardım, ancak projelerini klonlayıp Xcode'ta açtıktan sonra, aldığım hataların aynısı var. UIPageViewControllerDataSource protokolünü uygularken protokol uyumsuzluğu sorunu dışında çoğu çoğunu çözmeyi başardım.
Dürüst olmak gerekirse, Swift'de ?
ve !
kullanımını tam olarak anlamıyorum ve bu benim sorunuma neden oluyorsa. Çıkarılıyor! Protokol yöntemlerinin uygulanmasında değişkenlerden diğer hatalara neden olur.
Birisi size yardımcı olabilir mi?
class ViewController: UIViewController, UIPageViewControllerDataSource {
var pageViewController : UIPageViewController?
var pageTitles = ["Over 200 Tips and Tricks", "Discover Hidden Features", "Bookmark Favorite Tip", "FreeRegular Update"]
var pageImages = ["page1.png", "page2.png", "page3.png", "page4.png"]
var currentIndex = 0
@IBAction func startWalkthrough(sender: UIButton) {
var startingViewController : PageContentViewController = self.viewControllerAtIndex(0)!
var viewControllers : NSArray = [startingViewController]
self.pageViewController!.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
//Create page view controller
self.pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
self.pageViewController!.dataSource = self
let startingViewController : PageContentViewController = self.viewControllerAtIndex(0)!
let viewControllers: NSArray = [startingViewController]
self.pageViewController!.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil)
// Change the size of page view controller
self.pageViewController!.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);
self.addChildViewController(self.pageViewController!)
self.view.addSubview(self.pageViewController!.view)
self.pageViewController!.didMoveToParentViewController(self)
}
func pageViewController(pageViewController: UIPageViewController!,
viewControllerBeforeViewController viewController: UIViewController!) -> UIViewController! {
var index = (viewController as PageContentViewController).pageIndex
if index == 0 || index == NSNotFound {
return nil
}
index!--
println("Decreasing Index: \(index)")
return self.viewControllerAtIndex(index!)
}
func pageViewController(pageViewController: UIPageViewController!,
viewControllerAfterViewController viewController: UIViewController!) -> UIViewController! {
var index = (viewController as PageContentViewController).pageIndex
if index == NSNotFound {
return nil
}
index!++
println("Increasing Index: \(index)")
if index == self.pageTitles.count {
return nil;
}
return self.viewControllerAtIndex(index!);
}
func viewControllerAtIndex(index : Int) -> PageContentViewController? {
if self.pageTitles.count == 0 || index >= self.pageTitles.count {
return nil;
}
// Create a new view controller and pass suitable data.
let pageContentViewController = self.storyboard!.instantiateViewControllerWithIdentifier("PageContentViewController") as PageContentViewController
pageContentViewController.imageFile = self.pageImages[index]
pageContentViewController.titleText = self.pageTitles[index]
pageContentViewController.pageIndex = index
return pageContentViewController;
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return self.pageTitles.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
}
Teşekkürler Antonio! Ben bunu tamir eder etmez, uygulama beklendiği gibi çalışır. Ve bahşiş için teşekkürler, bunu bilmeliydim ama sanırım sadece soru ve ünlem işaretlerini görmezden geliyordum. Bir Java/Eclipse arka planından geldiğimde, bir arabirimi, özel bir sınıfta bu arabirimi uygularken otomatik olarak kullanarak IDE'ye alışkınım. –
Harika! Cmd + Tıklama hilesi, benim için diğer protokol ile çalışır. Teşekkürler! – pekpon