繁体   English   中英

Xamarin Forms在iOS上弹出导航为空

[英]Xamarin Forms Pop Out Navigation Empty on iOS

我已经使用Xamarin Forms开发了一个跨平台应用程序,该应用程序依赖于弹出式导航菜单(“ Navigation Master Detail”页面),可以在视图之间进行切换。

在iOS模拟器上,导航的行为符合预期; 但是,在物理设备上,导航菜单为空。

我已经测试了多个版本的iOS以排除兼容性问题,并且我已经确认UI元素可以正确加载-这已经确认列表数据没有加载。

这是我后面的导航主代码:

public partial class NavigationMaster : ContentPage
{
    public ListView ListView;

    public NavigationMaster()
    {
        Icon = Services.PlatformImage.Resolver("menu.png");
        InitializeComponent();

        BindingContext = new NavigationMasterViewModel();
        ListView = MenuItemsListView;
    }

    class NavigationMasterViewModel : INotifyPropertyChanged
    {

        private ObservableCollection<NavigationMenuItem> _menuItems = new ObservableCollection<NavigationMenuItem>();
        public ObservableCollection<NavigationMenuItem> MenuItems
        {
            get { return _menuItems; }
            set
            {
                _menuItems = value;
                OnPropertyChanged(nameof(MenuItems));
            }
        }

        public NavigationMasterViewModel()
        {
            MenuItems = new ObservableCollection<NavigationMenuItem>(new[]
            {
                new NavigationMenuItem { Id = 1, Title = "Projects", TargetType = typeof(Views.Projects)},
                new NavigationMenuItem { Id = 2, Title = "Tickets", TargetType = typeof(Views.Tickets)},
                new NavigationMenuItem { Id = 3, Title = "Documents", TargetType = typeof(Views.Documents)},
                new NavigationMenuItem { Id = 4, Title = "Calendar", TargetType = typeof(Views.Calendar)},
                new NavigationMenuItem { Id = 5, Title = "Discussion", TargetType = typeof(Views.Discussion)},
            });
        }
        #region INotifyPropertyChanged Implementation
        public event PropertyChangedEventHandler PropertyChanged;
        void OnPropertyChanged([CallerMemberName] string propertyName = "")
        {
            if (PropertyChanged == null)
                return;

            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
        #endregion
    }
}

而我的XAML:

<StackLayout>
    <ListView x:Name="MenuItemsListView"
              SeparatorVisibility="Default"
              HasUnevenRows="False"
              ItemsSource="{Binding MenuItems}"
              >
        <ListView.Header>
            <Grid BackgroundColor="#222222">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Image Source="Logo.png" Margin="40" Scale="0.5" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="1" Grid.Column="1"/>
            </Grid>
        </ListView.Header>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout HorizontalOptions="Start">
                        <Label Text="{Binding Title}"
                               TextColor="#000000"
                               VerticalOptions="Start"
                               VerticalTextAlignment="Center" 
                               FontSize="Small"
                               Margin="10"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

iOS模拟器的系统版本和型号与您的真实设备是否不同? 尝试删除窗体项目下的两个文件夹“ obj”和“ bin”,然后重新构建。

这是由链接器行为配置引起的-如果禁用了链接,则不会填充导航列表。

将链接器行为设置为“仅链接框架SDK”可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM