The user will click viewersTapped which will store the value of the senders current title into the protocol and then they will click the navigation bar back button which is viewWillDisappear to go to the base "ViewController".
language
protocol SourceForB {
func prepare(for segue: UIStoryboardSegue, from sender: Any?, toB vc: testStore)
}
protocol labelMaker {
func labelMaker(value: String)
}
class storeViewController: UIViewController {
var labelDelegate: labelMaker!
@IBAction func viewersTapped(_ sender: UIButton) {
labelDelegate.labelMaker(value: sender.currentTitle!)
}
override func viewWillDisappear(_ animated: Bool)
{
}
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = false
}
}
extension testStore : SegueDestination{
func prepareAsDestination( segue: UIStoryboardSegue, sender: Any?){
let sourceForB = segue.source as! SourceForB
sourceForB.prepare(for: segue, from: sender, toB: self)
}
}
Once they are in the base "ViewController" they will click startLivePressed which will segue them to the LiveViewController
language
class ViewController: UIViewController, SourceForB, SourceForC {
@IBOutlet weak var startLiveButton: UIButton!
var startLiveButtonIsSelected = false
@IBAction func startLivePressed(_ sender: UIButton) {
startLiveButtonIsSelected = !startLiveButtonIsSelected
performSegue(withIdentifier: "segueToCamera", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
segue.prepare(sender:sender)
}
func prepare(for segue: UIStoryboardSegue, from sender: Any?, toC vc: liveViewController) {
}
}
Where the value that was stored in the protocol should be displayed within the onlineViewers label
language
protocol SourceForC{
func prepare(for segue: UIStoryboardSegue, from sender: Any?, toC vc: liveViewController)
}
class liveViewController: UIViewController {
let storeView = storeViewController()
@IBOutlet var onlineViewers: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
storeView.labelDelegate = self
}
}
extension liveViewController: labelMaker {
func labelMaker(value: String) {
onlineViewers.text = value
}
extension liveViewController : SegueDestination {
func prepareAsDestination( segue: UIStoryboardSegue, sender: Any?){
let sourceForC = segue.source as! SourceForC
sourceForC.prepare(for: segue, from: sender, toC: self)
}
}
Topic:
Programming Languages
SubTopic:
Swift
Tags: