Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit dfb866b

Browse files
committed
Merge 4.7.0 into 4.8.0
2 parents e0e7548 + 2202e3e commit dfb866b

File tree

4 files changed

+26
-17
lines changed

4 files changed

+26
-17
lines changed

Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2232,4 +2232,4 @@
22322232
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
22332233
</EmbeddedResource>
22342234
</ItemGroup>
2235-
</Project>
2235+
</Project>

Xamarin.Forms.Platform.iOS/PageLifecycleManager.cs

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Xamarin.Forms.Platform.iOS
66
{
7-
internal class PageLifecycleManager : IDisposable
7+
internal class PageLifecycleManager : IDisposable, IDisconnectable
88
{
99
NSObject _activateObserver;
1010
NSObject _resignObserver;
@@ -36,24 +36,29 @@ protected virtual void Dispose(bool disposing)
3636

3737
if (disposing)
3838
{
39-
if (_activateObserver != null)
40-
{
41-
NSNotificationCenter.DefaultCenter.RemoveObserver(_activateObserver);
42-
_activateObserver = null;
43-
}
39+
(this as IDisconnectable).Disconnect();
40+
}
4441

45-
if (_resignObserver != null)
46-
{
47-
NSNotificationCenter.DefaultCenter.RemoveObserver(_resignObserver);
48-
_resignObserver = null;
49-
}
42+
_disposed = true;
43+
}
5044

51-
HandlePageDisappearing();
45+
void IDisconnectable.Disconnect()
46+
{
47+
if (_activateObserver != null)
48+
{
49+
NSNotificationCenter.DefaultCenter.RemoveObserver(_activateObserver);
50+
_activateObserver = null;
51+
}
5252

53-
_pageController = null;
53+
if (_resignObserver != null)
54+
{
55+
NSNotificationCenter.DefaultCenter.RemoveObserver(_resignObserver);
56+
_resignObserver = null;
5457
}
5558

56-
_disposed = true;
59+
HandlePageDisappearing();
60+
61+
_pageController = null;
5762
}
5863

5964
public void Dispose()
@@ -85,8 +90,12 @@ public void HandlePageDisappearing()
8590

8691
bool CheckIfWeAreTheCurrentPage()
8792
{
93+
if (_pageController == null)
94+
return false;
95+
8896
if (_pageController.RealParent is IPageContainer<Page> multipage)
8997
return multipage.CurrentPage == _pageController;
98+
9099
return true;
91100
}
92101
}

Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ void IDisconnectable.Disconnect()
267267
Element = null;
268268
}
269269

270+
(_pageLifecycleManager as IDisconnectable)?.Disconnect();
270271
_events?.Disconnect();
271272
_packager?.Disconnect();
272273
_tracker?.Disconnect();
@@ -279,7 +280,6 @@ protected override void Dispose(bool disposing)
279280

280281
if (disposing)
281282
{
282-
var page = Page;
283283
(this as IDisconnectable).Disconnect();
284284

285285
_pageLifecycleManager?.Dispose();

Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,4 +341,4 @@
341341
<PackageReference Condition="'$(CI)' == 'true'" Include="Xamarin.Build.TypeRedirector" Version="0.1.2-preview" PrivateAssets="all" />
342342
</ItemGroup>
343343
<ItemGroup />
344-
</Project>
344+
</Project>

0 commit comments

Comments
 (0)