2016-05-19 21 views
-1

Ich verwende PageMenu für Viewcontrollers Paginierung. Ich habe einen Haupt-Viewcontroller und später habe ich 3 UITableViewControllers hinzugefügt. Wenn ich nun zum Beispiel auf der zweiten Registerkarte meiner MainControllers zu einem ViewController gehe und zurückkehre, sieht es so aus wie der erste Tab, nicht der zweite.Wie erkennt man die Klasse von UITableView in UIViewController?

Jetzt möchte ich UITableView Klasse innerhalb meiner ViewController Haupt erkennen. Wie kann ich es tun?

Ich habe versucht:

for vc in navigationController!.viewControllers { 
     if vc is UITableViewController { 
      print("POPO \(vc)") 
     } 
    } 

aber dieser Code nicht alles drucken. Was ich falsch mache?

+2

isKindOfClass (UITableViewController) hilft –

+0

Dies bedeutet, dass keine der View-Controller Ihres Navigations-Controllers UITableViewControllers sind. Ohne mehr Kontext über die Struktur Ihrer App ist es schwierig zu helfen. – Tim

+0

@Jeff nein, ich habe! Können Sie sich bitte diese Repo ansehen? Du verstehst das Konzept – Sam

Antwort

0

Versuchen

if vc.isKindOfClass(UITableViewController) { 
    print("POPO \(vc)") 
} 

Oder

if let viewController = vc as? UITableViewController { 
    print("POPO \(vc)") 
} 
+0

aber es druckt nichts in diesem Fall auch – Sam

+0

versuchen 'vc.isKindOfClass (UIViewController)' und sehen, ob es sie alle druckt – Magoo

+0

Grundsätzlich denke ich nicht Ihre ViewControllers befinden sich auf dem Navigations-Stack – Magoo

0
for vc in navigationController!.viewControllers { 
    if vc is UITableViewController { 
     print("POPO \(vc)") 
    } 
} 

Diese die Aussage nur druckt, wenn die TableViewController noch im UINavigationController Stapel ist. Wenn Sie die TableViewController besucht und über eine pop zurückgeschickt haben, wird diese aus dem Navigationsstapel entfernt und das obige Codefragment druckt nichts mehr. Stellen Sie sicher, dass der TableViewController im Stapel ist, um das Ergebnis in dieser Methode zu erhalten.

Verwandte Themen