This repository was archived by the owner on Jul 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 610
Expand file tree
/
Copy pathBaseViewController.cs
More file actions
87 lines (70 loc) · 2.47 KB
/
BaseViewController.cs
File metadata and controls
87 lines (70 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using ReactiveUI;
using System.Reactive.Subjects;
using System.Reactive.Linq;
using Foundation;
using System.Reactive;
namespace CodeHub.iOS.ViewControllers
{
public abstract class BaseViewController : ReactiveViewController, IActivatable
{
private readonly ISubject<bool> _appearingSubject = new Subject<bool>();
private readonly ISubject<bool> _appearedSubject = new Subject<bool>();
private readonly ISubject<bool> _disappearingSubject = new Subject<bool>();
private readonly ISubject<bool> _disappearedSubject = new Subject<bool>();
private readonly ISubject<Unit> _loadedSubject = new Subject<Unit>();
#if DEBUG
~BaseViewController()
{
Console.WriteLine("All done with " + GetType().Name);
}
#endif
public IObservable<Unit> Loaded => _loadedSubject.AsObservable();
public IObservable<bool> Appearing => _appearingSubject.AsObservable();
public IObservable<bool> Appeared => _appearedSubject.AsObservable();
public IObservable<bool> Disappearing => _disappearingSubject.AsObservable();
public IObservable<bool> Disappeared => _disappearedSubject.AsObservable();
public void OnActivation(Action<Action<IDisposable>> d)
{
this.WhenActivated(d);
}
protected BaseViewController()
{
CommonConstructor();
}
protected BaseViewController(string nib, NSBundle bundle)
: base(nib, bundle)
{
CommonConstructor();
}
private void CommonConstructor()
{
this.WhenActivated(_ => { });
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
_appearingSubject.OnNext(animated);
}
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
_appearedSubject.OnNext(animated);
}
public override void ViewWillDisappear(bool animated)
{
base.ViewWillDisappear(animated);
_disappearingSubject.OnNext(animated);
}
public override void ViewDidDisappear(bool animated)
{
base.ViewDidDisappear(animated);
_disappearedSubject.OnNext(animated);
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
_loadedSubject.OnNext(Unit.Default);
}
}
}