Переход на новый ViewController


#1

Добрый день! Имеется ViewCollectionController в heandlere collectionView расположен UISegmentedControl(). С двумя ячейками. Так вот мне нужно перейти на другой storyboard при тапе на одну из этих ячеек. Как реализовать переход? Для наглядности картинка

Сижу туплю)


#2

Событие делегата не отловить? :thinking:


#3

Получается что да. Все делаю кодом


#4

Тема закрыта!!!


#5

И решением было … !!!


#6

Да, сделал через NotificationCenter и переход через storyboard

class PremiereStorybordController: UIViewController {
static func storyboardInstance() -> SchedulePremiereController {
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    return mainStoryboard.instantiateViewController(withIdentifier: String(describing: self)) as! SchedulePremiereController
}

#7

Это вообще как??? Какое вообще отношение имеет код или IB к делегату?
Вы искали как делается прослушка изменения состояния в сегменте?


#8

Понимаю, что извращение я потому и спросил на форуме все промолчали. Потому и извращение. В первом ViewController сделал

     override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(soonMenuSegmentBotton), name: NSNotification.Name(rawValue: "red"), object: nil)
}

 @objc func soonMenuSegmentBotton(sender: UIButton) {
    let detailViewController = PremiereStorybordController.storyboardInstance()
    self.navigationController?.pushViewController(detailViewController, animated: true)
}

class MenuHeaderTop: UICollectionReusableView {

let todayHeaderLabel = RoundLabel()
let dayWeek = RoundLabel()
var segmentedMenu = MenuSegmentsController().segmented

override init(frame: CGRect) {
    super.init(frame: frame)

    stackViewHeaderMenu()
}

func stackViewHeaderMenu() {
       segmentedMenu.addTarget(self, action: #selector(menuSegmen(_:)), for: .valueChanged)
}

@objc func menuSegmen(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        print("Сейчас в кино");
    case 1:
        print("Скоро в кино")
        NotificationCenter.default.post(name: NSNotification.Name("red"), object: nil)
    default:
        break
    }
}


required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}


#9

#10

нотификаций лучше избегать.


#11

Скажите чем нотификации чреваты?


#12

NotificationCenter это пропасть, вы туда кидаете камень и не знаете где он вылетит, а когда прилетит вы не знаете кто его кинул, через пол года когда вы свой код подзабудете, оно будет выглядеть именно так :slight_smile:


#13

Я в одном проекте нотификации кидал только как костыли. В других местах делегаты юзал.