Ich habe Ray Wenderlich tutorial über das Erstellen einer iOS-Buchanimation verfolgt, jetzt versuche ich, einige Änderungen daran vorzunehmen.Ich kann keinen weiteren ViewController durchführen, nachdem ich den aktuellen mit einem klaren Hintergrund gezeigt habe.
Original-Projekt besteht aus Navigation Controller
, Books View Controller
- einer Reihe von Büchern zeigen, indem Sie auf ein Buch, klicken Sie sie öffnen können - und Book View Controller
- offen das ausgewählte Buch zeigt.
Was ich hinzugefügt habe: a View Controller
und legen Sie es als anfängliche VC; a UIButton
, die einen Show-Übergang zu Navigation Controller
durchführen.
Ich mag nach Books View Controller
erscheinen View Controller
im Hintergrund zeigen, aber anscheinend iOS entfernt die Ansicht-Controller unter ihn aus der Sicht Hierarchie, kann dies zu einem schwarzen Hintergrund führen, wenn ich clearColor
im Attribute-Inspektoren festgelegt werden. Ich habe dann den folgenden Code zu ViewController.swift
hinzugefügt, um einen transparenten Hintergrund zu haben.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("BooksViewController") as! BooksViewController
vc.view.backgroundColor = UIColor.clearColor()
vc.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(vc, animated: true, completion: nil)
}
Es funktioniert gut, und ich kann die anfängliche VC im Hintergrund sehen, während die Reihe der Bücher zu sehen, aber ich kann nicht mehr segue ausführt an einem Buch zu Book View Controller
durch einen Klick. So scheinbar openBook
in BooksViewController
nie aufgerufen:
func selectedCell() -> BookCoverCell? {
if let indexPath = collectionView?.indexPathForItemAtPoint(CGPointMake(collectionView!.contentOffset.x + collectionView!.bounds.width/2, collectionView!.bounds.height/2)) {
if let cell = collectionView?.cellForItemAtIndexPath(indexPath) as? BookCoverCell {
return cell
}
}
return nil
}
func openBook(book: Book?) {
let vc = storyboard?.instantiateViewControllerWithIdentifier("BookViewController") as! BookViewController
vc.book = selectedCell()?.book
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.navigationController?.pushViewController(vc, animated: true)
return
})
}
Ich kann nicht verstehen, wo das Problem ist, ist jede Hilfe wirklich zu schätzen. Bitte sei sanft, ich lerne immer noch Swift und Englisch ist nicht meine Muttersprache.
Gut gearbeitet, danke. –