• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - ScrollView 进入内容页面推送异步不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:10:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我需要你的帮助。我实际上是从 Xamarin.forms 开始的。 我有一个 HomePage:TabbedPage,它有 3 个 ContentPage。

这 3 个页面中的一个是 ListView,在点击项目时,它会调用另一个带有 ScrollView 的内容页面。

ListView.ItemTapped += async (o, e) =>
{
    var myList = (ListView)o;
    var newPage = (myList.SelectedItem as Object);
    await Navigation.PushAsync(new Page(Object));
    myList.SelectedItem = null; // de-select the row
};

我在这个新页面上有一个 ScrollView,但它不起作用。

我复制了页面并在没有 Navigation.PushAsync 的情况下调用它,并且滚动工作。

我实际上只使用 iOS 模拟器。

你知道原因吗?

我正在使用 xaml。

非常感谢。如果您需要更多信息,请告诉我..!

还有我的 App.xaml.cs

public App()
    {
        InitializeComponent();

        MainPage = new HomePage();
    } 

这是我的主页:

public class HomePage : TabbedPage
{
    public HomePage()
    {
        var profilPage = new NavigationPage(new UserPage());
        profilPage.Title = "rofil";
        profilPage.Icon = "user.png";
        var gameListPage = new NavigationPage(new GameListPage());
        gameListPage.Title = "Jeux";
        gameListPage.Icon = "gamepad.png";
        Children.Add(profilPage);
        Children.Add(gameListPage);
     }
 }

我的主页调用 GameListPage :

<ContentPage.Content>
    <ListView x:Name="GameListView">
        <ListView.ItemTemplate>
          <DataTemplate> 
            <TextCell Text="{Binding name}" />

          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
</ContentPage.Content>

有事件:

GameListView.ItemTapped += async (o, e) =>
        {
            var myList = (ListView)o;
            var game = (myList.SelectedItem as Game);
            await Navigation.PushAsync(new GamePage(game));
            //await DisplayAlert("Tapped", game.name, "OK");
            myList.SelectedItem = null; // de-select the row
        };

GamePage 在这里:

gamePage.xaml

    <ContentPage.Content>
    <ScrollView>
        <RelativeLayout x:Name="RelativeLayout"  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
            <Grid RelativeLayout.WidthConstraint =
          "{ConstraintExpression Type=RelativeToParent,
                                 Property=Width,
                                 Factor=1,
                                 Constant=0}"
        RelativeLayout.HeightConstraint =
          "{ConstraintExpression Type=RelativeToParent,
                                 Property=Height,
                                 Factor=1,
                                 Constant=0}">
              <Grid.RowDefinitions>
                    <RowDefinition Height="500">
                    </RowDefinition>
                    <RowDefinition Height="500">
                    </RowDefinition>
                    <RowDefinition Height="550">
                    </RowDefinition>
                    <RowDefinition Height="20">
                    </RowDefinition>
                    <RowDefinition Height="300">
                    </RowDefinition>
                    <RowDefinition Height="500">
                    </RowDefinition>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*">
                    </ColumnDefinition>
                    <ColumnDefinition Width="*">
                    </ColumnDefinition>
                    <ColumnDefinition Width="*">
                    </ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.Children>

                    <StackLayout Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3">
                        <BoxView BackgroundColor="Black" HeightRequest="500"></BoxView>
                    </StackLayout>
                    <StackLayout Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3">
                        <BoxView BackgroundColor="Black" HeightRequest="500"></BoxView>
                    </StackLayout>
                    <StackLayout Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
                        <BoxView BackgroundColor="Black" HeightRequest="500"></BoxView>
                    </StackLayout>
                </Grid.Children>
         </Grid>
          </RelativeLayout>
    </ScrollView>
</ContentPage.Content>

我把这个内容实际上是为了测试滚动。而且,在另一个 contentPage 中,具有相同的内容,我可以滚动。它就在这个页面上,通过 async Navigation.PushAsync 调用...

已编辑:解决了 StackLayout 与 HeightRequest 到 1500。我的滚动工作现在..临时解决了所以.. 它不正确



Best Answer-推荐答案


我建议您为您的 View 设置一个 BackgroundColor,例如:

ScrollView mainContainer = new ScrollView{ 背景颜色 = 颜色.红色 };

因此,您可以仔细检查您的 View 实际上是否正在渲染到 ContentPage 本身。

另外一个问题可能是 ScrollView 上没有足够的元素(Label、Image、Entry、Button...随便:https://developer.xamarin.com/guides/xamarin-forms/user-interface/controls/views/)来实际滚动。

为您的 View 设置测试背景颜色,并让我们知道实际问题所在。

还请记住,ScrollView 具有 Content 属性,因此您可以向其添加布局。示例:

var stack = new StackLayout();

for (int i = 0; i < 100; i++)
{
    stack.Children.Add(new Button { Text = "Button " + i });
}

MainPage = new ContentPage
{
    Content = new ScrollView { Content = stack }
};

关于ios - ScrollView 进入内容页面推送异步不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674867/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap