Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. import UIKit
  2.  
  3. protocol GiverType {
  4. var message: String { get }
  5. }
  6.  
  7. protocol ReceiverType: class {
  8. var message: String? { get set }
  9. }
  10.  
  11. protocol TransitionMediator {
  12. var giver: GiverType { get }
  13. var receiver: ReceiverType { get }
  14.  
  15. func mediate()
  16. }
  17.  
  18. extension TransitionMediator {
  19. func mediate() {
  20. receiver.message = giver.message
  21. }
  22. }
  23.  
  24. extension TransitionMediator where Self: UIStoryboardSegue {
  25. var giver: GiverType {
  26. return sourceViewController as! GiverType
  27. }
  28.  
  29. var receiver: ReceiverType {
  30. return destinationViewController as! ReceiverType
  31. }
  32. }
  33.  
  34. class MediateSegue: UIStoryboardSegue, TransitionMediator {
  35. override func perform() {
  36. mediate()
  37. super.perform()
  38. }
  39. }
  40.  
  41. class ViewController: UIViewController, GiverType {
  42. var message: String {
  43. return "test"
  44. }
  45.  
  46. override func viewDidLoad() {
  47. super.viewDidLoad()
  48. // Do any additional setup after loading the view, typically from a nib.
  49. }
  50.  
  51. override func didReceiveMemoryWarning() {
  52. super.didReceiveMemoryWarning()
  53. // Dispose of any resources that can be recreated.
  54. }
  55. }
  56.  
  57. class SecondViewController: UIViewController, ReceiverType {
  58. @IBOutlet weak var label: UILabel!
  59.  
  60. var message: String?
  61.  
  62. override func viewDidLoad() {
  63. super.viewDidLoad()
  64.  
  65. label.text = message
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement