#listview #xamarin #xamarin.forms #xamarin.ios #frame
#listview #xamarin #xamarin.forms #xamarin.ios #фрейм
Вопрос:
Мой ListView сталкивается с исключением с нулевой ссылкой в Xamarin.Формы для iOS. В Xamarin.Forms для Android работает нормально. Теперь я использую Xamarin.Версия Forms 4.8.0.1687 (последняя стабильная версия). Раньше эта проблема работала нормально, но я использовал Xamarin.Версия Forms — 4.6.0.847. Как мне решить эту проблему?
Трассировка стека:
at Xamarin.Forms.Platform.iOS.FrameRenderer.AddSubview (UIKit.UIView view) [0x00009] in D:a1sXamarin.Forms.Platform.iOSRenderersFrameRenderer.cs:26
at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00057] in D:a1sXamarin.Forms.Platform.iOSVisualElementPackager.cs:119
at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load () [0x0001e] in D:a1sXamarin.Forms.Platform.iOSVisualElementPackager.cs:49
at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x0012e] in D:a1sXamarin.Forms.Platform.iOSVisualElementRenderer.cs:283
at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in D:a1sXamarin.Forms.Platform.iOSVisualElementRenderer.cs:158
at Xamarin.Forms.Platform.iOS.RendererPool.GetFreeRenderer (Xamarin.Forms.VisualElement view) [0x00048] in D:a1sXamarin.Forms.Platform.iOSRendererPool.cs:44
at Xamarin.Forms.Platform.iOS.RendererPool.FillChildrenWithRenderers (Xamarin.Forms.VisualElement element) [0x00035] in D:a1sXamarin.Forms.Platform.iOSRendererPool.cs:117
at Xamarin.Forms.Platform.iOS.RendererPool.UpdateNewElement (Xamarin.Forms.VisualElement newElement) [0x000ae] in D:a1sXamarin.Forms.Platform.iOSRendererPool.cs:77
at Xamarin.Forms.Platform.iOS.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00037] in D:a1sXamarin.Forms.Platform.iOSVisualElementPackager.cs:205
at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnRendererElementChanged (System.Object sender, Xamarin.Forms.Platform.iOS.VisualElementChangedEventArgs args) [0x0000f] in D:a1sXamarin.Forms.Platform.iOSVisualElementPackager.cs:186
at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].OnElementChanged (Xamarin.Forms.Platform.iOS.ElementChangedEventArgs`1[TElement] e) [0x00020] in D:a1sXamarin.Forms.Platform.iOSVisualElementRenderer.cs:395
at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x00172] in D:a1sXamarin.Forms.Platform.iOSVisualElementRenderer.cs:296
at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in D:a1sXamarin.Forms.Platform.iOSVisualElementRenderer.cs:158
at Xamarin.Forms.Platform.iOS.ListViewRenderer UnevenListViewDataSource.CalculateHeightForCell (UIKit.UITableView tableView, Xamarin.Forms.Cell cell) [0x00035] in D:a1sXamarin.Forms.Platform.iOSRenderersListViewRenderer.cs:946
at Xamarin.Forms.Platform.iOS.ListViewRenderer UnevenListViewDataSource.GetEstimatedRowHeight (UIKit.UITableView table) [0x0008c] in D:a1sXamarin.Forms.Platform.iOSRenderersListViewRenderer.cs:875
at Xamarin.Forms.Platform.iOS.ListViewRenderer UnevenListViewDataSource.UpdateEstimatedRowHeight (UIKit.UITableView tableView) [0x00000] in D:a1sXamarin.Forms.Platform.iOSRenderersListViewRenderer.cs:886
at Xamarin.Forms.Platform.iOS.ListViewRenderer ListViewDataSource.DetermineEstimatedRowHeight () [0x00009] in D:a1sXamarin.Forms.Platform.iOSRenderersListViewRenderer.cs:1338
at Xamarin.Forms.Platform.iOS.FormsUITableViewController.ViewWillLayoutSubviews () [0x00000] in D:a1sXamarin.Forms.Platform.iOSRenderersListViewRenderer.cs:1681
at (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Library/Frameworks/Xamarin.iOS.framework/Versions/14.4.1.3/src/Xamarin.iOS/UIKit/UIApplication.cs:86
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0000e] in /Library/Frameworks/Xamarin.iOS.framework/Versions/14.4.1.3/src/Xamarin.iOS/UIKit/UIApplication.cs:65
at
<ListView.HeaderTemplate>
<DataTemplate>
<ContentView>
<!--Sample Content-->
<StackLayout Orientation="Horizontal" Margin="0,0,0,10" VerticalOptions="FillAndExpand" HorizontalOptions="EndAndExpand">
<ImageButton Source="test.png" HeightRequest="32" WidthRequest="32" />
</StackLayout>
</ContentView>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Frame CornerRadius="3" Margin="0,0,0,3" x:Name="frame" Padding="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HasShadow="False">
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!--Sample Content-->
<StackLayout Orientation="Horizontal" Margin="0,0,0,10" VerticalOptions="FillAndExpand" HorizontalOptions="EndAndExpand">
<ImageButton Source="test1.png" HeightRequest="32" WidthRequest="32" />
</StackLayout>
</Grid>
</Frame>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<local:CustomCell >
<ContentView>
<Frame CornerRadius="3" HasShadow="False" Margin="1,1,1,1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Padding="8" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!--Sample Content-->
<StackLayout Orientation="Horizontal" Margin="0,0,0,10" VerticalOptions="FillAndExpand" HorizontalOptions="EndAndExpand">
<ImageButton Source="sample.png" HeightRequest="32" WidthRequest="32" />
</StackLayout>
</Grid>
</Frame>
</ContentView>
</local:CustomCell>
</DataTemplate>
</ListView.ItemTemplate>
Комментарии:
1. мы не можем помочь отлаживать код, который мы не видим
2. Поскольку он работает в более старой версии, вы могли бы сначала очистить папку bin и obj, а затем перестроить свой проект. Если это все еще не работает, вы можете поделиться своим образцом с github, чтобы я мог протестировать его на своей стороне 🙂