2016-08-24 2 views
0

Ich implementiere benutzerdefinierte horizontale mehrere Segmente mit Tabellenansicht Controller als Inhalt jedes Segments. Aber wie implementiert man nur einen Controller für alle Segmente, weil die Ansicht für alle Segmente gleich ist, aber nur Daten geändert werden. Ich möchte den aktuellen Index des Segments an den Tabellenansicht-Controller übergeben, um bestimmte Daten zu erhalten. Ich verwende CAPSPageMenu.swift Datei von - https://codeload.github.com/uacaps/PageMenu/zip/master?Wie implementiert man nur einen Tabellen-Controller für alle Segmente im Pager?

hier ist mein Code-

class Entrance_main_controller: UIViewController { 

      var pageMenu : CAPSPageMenu? 



override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    // MARK: - UI Setup 

    self.title = "Entrance Exam" 

    // Initialize view controllers to display and place in array 
    var controllerArray : [UIViewController] = [] 



    let controller1 : Entrance_Content_ViewController =   Entrance_Content_ViewController(nibName: "TestTableViewController", bundle: nil) 
    controller1.title = "Engineering" 
    controllerArray.append(controller1) 
    let controller2 : Entrance_Content_ViewController = Entrance_Content_ViewController(nibName: "TestTableViewController", bundle: nil) 
    controller2.title = "Medical" 
    controllerArray.append(controller2) 

    let controller3 : Entrance_Content_ViewController = Entrance_Content_ViewController(nibName: "TestTableViewController", bundle: nil) 
    controller3.title = "Management" 
    controllerArray.append(controller3) 

    // Customize menu (Optional) 
    let parameters: [CAPSPageMenuOption] = [ 
     .ScrollMenuBackgroundColor(UIColor(red: 30.0/255.0, green: 30.0/255.0, blue: 30.0/255.0, alpha: 1.0)), 
     .ViewBackgroundColor(UIColor(red: 20.0/255.0, green: 20.0/255.0, blue: 20.0/255.0, alpha: 1.0)), 
     .SelectionIndicatorColor(UIColor.orangeColor()), 
     .BottomMenuHairlineColor(UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)), 
     .MenuItemFont(UIFont(name: "HelveticaNeue", size: 13.0)!), 
     .MenuHeight(40.0), 
     .MenuItemWidth(90.0), 
     .CenterMenuItems(true) 
    ] 

    // Initialize scroll menu 
    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters) 

    self.addChildViewController(pageMenu!) 
    self.main_content_view.addSubview(pageMenu!.view) 

    pageMenu!.didMoveToParentViewController(self) 
} 
//here I am getting current index 
func get_current_page() -> Int { 
    let currentIndex = pageMenu!.currentPageIndex 
    return currentIndex; 
} 

// MARK: - Container View Controller 
override func shouldAutomaticallyForwardAppearanceMethods() -> Bool { 
    return true 
} 

override func shouldAutomaticallyForwardRotationMethods() -> Bool { 
    return true 
} 
} 

ich hier Entrance_Content_ViewController Klasse für alle segments.In dieses Controller Ich rufe get_current_page() Methode zum aktuellen Seite Index verwenden.

class Entrance_Content_ViewController: UITableViewController { 

override func viewDidLoad() { 
super.viewDidLoad() 

let entrance_main_controller = Entrance_main_controller() 
    let page = entrance_main_controller.get_current_page() 
    print("page no\(page)") 

    self.tableView.registerNib(UINib(nibName: "EntranceTableViewCell",  bundle: nil), forCellReuseIdentifier: "EntranceTableViewCell") 

     } 

Aber ich dies immer fehler- fataler Fehler: unerwartet gefunden null, während ein optionaler Wert Abwickeln (LLDB) Bitte helfen Sie mir, dieses Problem zu lösen. danke

Antwort

0

Die Grundidee Sie implementieren können, ist, für jedes Segment Array von Daten aufrechtzuerhalten. Wechseln Sie dann den Segment-Index und ordnen Sie nach Segment-Index tableView DataSource zu.

Der grobe Code so sein sollte:

switch(segmentIndex) 
{ 
    case: 0 yourDatasourceArray = segment0_DataArray 
       : 
       : 
    //like this for all segments. 
} 
+0

wie kann ich in Tabelle View-Controller erhalten Segmentindex? – sachin

+0

In Ihrem Fall wird es currentPageIndex sein. –

+0

ja, aktuelle Seitenindex – sachin

Verwandte Themen