6

Po prostu mam kontroler widoku nawigacyjnego w mojej aplikacji z tylnym stołem VC i przednim stołem VC. Wybrana komórka w tylnej tabeli VC powinna przenosić się do przedniej tabeli VC (osadzonej w VC nawigacji). Aby zilustrować, tutaj są izolowane ustawienia sprzed zmiany i kod z nią działa poprawnie:Komórka nubi SWRevealViewController nie wykonuje segmentu

enter image description here enter image description here enter image description here

Oto uproszczony kod działa w moim stole tylnym VC cellForRowAtIndexPath metoda:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let navigationCell = tableView.dequeueReusableCellWithIdentifier("NavigationCell", forIndexPath: indexPath) as UITableViewCell 
    return navigationCell 
} 

OK, na zabawę. Wszystko, czego chcę, to zastąpienie domyślnej opcji UITableViewCell pokazanej powyżej z jedną z moich niestandardowych komórek w pliku Xib. Teraz zilustruję to, co zmodyfikowałem. Po pierwsze, oto moja komórka Xib w moim pliku NavigationCell.xib. Nic specjalnego.

enter image description here enter image description here

My NavigationCell kod klasy jest po prostu

import UIKit 

class NavigationCell: UITableViewCell { 
    @IBOutlet var nameLabel: UILabel! 
} 

Wreszcie zmodyfikowany mojego kodu w moim stole tylnym VC zarejestrować XIb i dequeue komórkę niestandardowe:

override func viewDidLoad() { 
    super.viewDidLoad() 
    let navigationCellNib = UINib(nibName: "NavigationCell", bundle: nil) 
    tableView.registerNib(navigationCellNib, forCellReuseIdentifier: "NavigationCell") 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let navigationCell = tableView.dequeueReusableCellWithIdentifier("NavigationCell", forIndexPath: indexPath) as! NavigationCell 
    return navigationCell 
} 

Wszystkie pozostałe kody i specyfikacje pozostają bez zmian. Zbiór storyboardów dla nowej niestandardowej komórki nadal znajduje się w klasie SWRevealViewControllerSeguePushController, jak pokazano na pierwszym zrzucie ekranu dla tego pytania. Po prostu zamieniłem domyślną UITableViewCell z moją niestandardową komórką Xib.

Ta modyfikacja wystarczyła, aby powstrzymać zmianę. Dzięki tej modyfikacji, po zbudowaniu i uruchomieniu, kiedy wysuwam menu nawigacyjne VC z tyłu stołu i wybieram jedną z moich niestandardowych komórek nawigacyjnych (które wyświetlają się prawidłowo), nie powoduje ona żadnej zmiany. jakieś pomysły?

+0

Użyłem wcześniej SWRevealController i to jest trudne. Czy próbowałeś, aby przełącznikiem był setController zamiast pushController? – NSGangster

+0

Zmieniłem go w tę iz powrotem bez skutku. Kiedy stuknę komórkę nawigacyjną, podświetla się ona domyślnie jako jasnoszara i uruchamia metodę 'didSelectRowAtIndexPath', ale to wszystko, na ile to możliwe. – Aaron

+0

Oto samouczek, którego używałem, gdy po raz pierwszy bawiłem się z SWRevealController http://www.appcoda.com/ios-programming-sidebar-navigation-menu/ Masz większość tego ustawienia przejdź do sekcji zatytułowanej realizacji menu wyboru pozycji. Wygląda na to, że potrzebujesz identyfikatora segue i przygotowujesz się do metody "gap". Upewnij się również, że masz właściwe identyfikatory sw_front, sw_rear segue. To jest dobry samouczek. – NSGangster

Odpowiedz

4

Jestem idiotą. Musiałem programowo przeprowadzić segue w didSelectRowAtIndexPath.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("MySegue", sender: self) 
}