diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla36955.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla36955.cs new file mode 100644 index 000000000..4f1a8e799 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla36955.cs @@ -0,0 +1,62 @@ +using System; + +using Xamarin.Forms.CustomAttributes; +#if UITEST +using Xamarin.UITest; +using Xamarin.UITest.iOS; +using Xamarin.UITest.Queries; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 36955, "[iOS] ViewCellRenderer.UpdateIsEnabled referencing null object", PlatformAffected.iOS)] + public class Bugzilla36955 : TestContentPage + { + protected override void Init() + { + var ts = new TableSection(); + var tr = new TableRoot { ts }; + var tv = new TableView(tr); + + var sc = new SwitchCell + { + Text = "Toggle switch; nothing should crash" + }; + + var button = new Button(); + button.SetBinding(Button.TextProperty, new Binding("On", source: sc)); + + var vc = new ViewCell + { + View = button + }; + vc.SetBinding(IsEnabledProperty, new Binding("On", source: sc)); + + ts.Add(sc); + ts.Add(vc); + + Content = tv; + } + +#if UITEST + [Test] + public void Bugzilla36955Test() + { + if (RunningApp is iOSApp) + { + AppResult[] buttonFalse = RunningApp.Query(q => q.Button().Text("False")); + Assert.AreEqual(buttonFalse.Length == 1, true); + RunningApp.Tap(q => q.Class("Switch")); + AppResult[] buttonTrue = RunningApp.Query(q => q.Button().Text("True")); + Assert.AreEqual(buttonTrue.Length == 1, true); + } + else + { + Assert.Inconclusive("Test is only run on iOS."); + } + } +#endif + } +} diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index f843a2e3d..93de60b17 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -68,6 +68,7 @@ + diff --git a/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs b/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs index b14162952..54f3c1e04 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs @@ -35,6 +35,8 @@ namespace Xamarin.Forms.Platform.iOS viewCell.PropertyChanged += ViewCellPropertyChanged; cell.ViewCell = viewCell; + SetRealCell(item, cell); + WireUpForceUpdateSizeRequested(item, cell, tv); UpdateBackground(cell, item);