2016-05-06 13 views
1

Ich erstelle eine App, mit der der Benutzer jeden Tag ein zufälliges Zitat sehen kann. In dieser App werden dem Nutzer 3 Fragen gestellt, bevor er die App tatsächlich nutzen kann. Die letzte Frage ist ein einfaches "Was ist deine Lieblingskategorie/Thema". Mit dieser Eingabeaufforderung tippt der Benutzer auf eine Zelle und wird zu einem Tab-Bar-Controller gebracht, wobei der erste "Kind" -Sicht-Controller das Zitat selbst ist.Von UITableView zu UITabBarController wechseln

Problem: Ich möchte der Benutzer eine UITableViewCell erschließen zu können und der, den sie Effekte tippen, die TabBarController sie gebracht werden.

enter image description here

, dass das Foto mit den Fehlern, die ich in so weit leite. Hier ist der Code.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 


    if(segue.identifier == "bookSegue") 
    { 
     let bookQuoteTabBar = segue.destinationViewController as! UITabBarController 

     let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? bookQuoteScreen 


    } 

    else if(segue.identifier == "businessSegue") { 

     let businessQuoteTabBar: UITabBarController = segue.destinationViewController as! UITabBarController 
     let businessQuoteScreen = businessQuoteTabBar.viewControllers?[0] as? businessQuoteScreen 
    } 




} 

Irgendwann wird es mehr Themen geben, was mehr Übergänge bedeutet. Aber jetzt, ich beginne mit zwei

Die segues für jeden TabBarController sind: "bookSegue" "businessSegue"

Die Tab Bars sind: "bookQuoteTabBar" und "businessQuoteTabBar"

Die ersten "Child" View-Controller sind: "bookQuoteScreen" "businessQuoteScreen"

Sollte ich etwas anderes geschrieben haben? Habe ich die Segues, Identitäten und Klassen jedes Objekts richtig benannt? Wenn Sie mehr Informationen oder Referenzen benötigen, kommentieren Sie, was ich hinzufügen soll und ich werde es innerhalb weniger Minuten hinzufügen. Vielen Dank im Voraus!

--------- Letzte Änderungen ---------

BooksQuoteScreen:

import Foundation 
import UIKit 

class BooksQuoteScreen: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

BusinessQuoteScreen:

import Foundation 
import UIKit 
import Social 

class BusinessQuoteScreen: UIViewController { 

//============================// 
//********** Outlets *********// 
//============================// 

let utility = Utility() 
@IBOutlet weak var quoteDisplay: UILabel! 
@IBOutlet weak var authorDisplay: UILabel! 
@IBOutlet weak var quoteBackground: UIImageView! 
... 
} 

enter image description here

Antwort

0

Die Fehler in Ihrem Screenshot ("Verwendung des nicht deklarierten Typs ....") zeigen an, dass Xcodenicht erkenntund businessQuoteScreen als gültig Typen. In den hervorgehobenen Zeilen, z.

let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? bookQuoteScreen 

Der Typ (angegeben nach "wie?") Muss mit dem Klassennamen übereinstimmen, der in Ihren .swift-Dateien definiert ist. Prüfen Sie sehr genau, ob die verwendeten Namen mit den (vermutlich) in "BusinessQuoteScreen.swift" und "BooksQuoteScreen.swift" definierten Klassennamen übereinstimmen. Ohne den Inhalt dieser Dateien zu sehen, kann ich nicht sicher sein, aber ich vermute, dass das führende Zeichen groß geschrieben werden muss (es sollte für Klassennamen sein), und Sie benötigen möglicherweise ein "s" in "Buch s QuoteScreen ":

let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? BooksQuoteScreen 

und

let businessQuoteScreen = businessQuoteTabBar.viewControllers?[0] as? BusinessQuoteScreen 
+0

ich bin immer noch die gleichen Fehler, auch wenn sie alle scheinen zu passen.Vermisse ich ein Gebiet? Kannst du erklären, wie man es allgemein aufstellt? Vielleicht kann ich das wiederholen und das zweite Mal nicht durcheinander bringen. Andere können vielleicht auch daraus lernen, damit sie nicht den dummen Fehler machen, den ich gemacht habe. –

+0

@JNorris Wenn Sie die Namen usw. überprüft haben, ist es möglich, dass Xcode nicht erkennt, dass Ihre beiden schnellen Dateien im "Ziel" enthalten sein sollten. Sie können Folgendes überprüfen: Wählen Sie jede Datei in der Liste auf der linken Seite aus, und klicken Sie dann rechts auf das Quadrat-Symbol (über "Schnellhilfe"), um den Datei-Inspektor anzuzeigen. Weiter unten auf der RHS Xcode wird "Target Mitgliedschaft" zeigen - welche Namen sind dort aufgeführt, und sind sie angekreuzt? – pbasdf

+0

Der erste sagt "Quote Daily", es hat ein Häkchen. Die zweite sagt "Quote DailyTests", nicht überprüft. Der letzte sagt "Quote DailyUITests", auch nicht überprüft. Es ist das gleiche für beide Dateien –

Verwandte Themen