gpt4 book ai didi

ios - 如何滑动查看维护的导航栏项?

转载 作者:行者123 更新时间:2023-11-28 06:27:57 25 4
gpt4 key购买 nike

我正在尝试实现滑动查看功能,就像 Twitter 的 friend 圈一样:

enter image description here

如果您查看顶部,您会看到带有 View 的水平 slider 。我的要求有点不同......在那个水平 slider 的顶部,我需要我的常规导航栏和每个页面的自定义项目。

我实现的滑动查看有一些小错误。请看一下这个视频(这是我到目前为止所做的):

http://sendvid.com/5j50p73z

如您所见,滑动 View 功能正在运行,但我仍然缺少一些重要的东西,即:

  1. 当滑动到下一个 View 时,它会向上滚动(在视频中看到)
  2. 我的 View 都包含在导航 Controller 及其各自的导航栏项目中。在我看来,我需要像 PushViewController 这样没有后退按钮的东西,但这对两个方向都有效……我有点迷路了如果我添加导航 Controller 而不是它显示的 View 栏,但低于当前现有栏,而不是替换它。

关于如何解决这些问题有什么想法吗?

我正在使用 Xamarin.iOS 进行开发,但如果您可以提供一个使用 swift 的示例,我想我可以尝试翻译它:)

这是我目前所拥有的:

var viewController = Storyboard.InstantiateViewController("detailClaimViewController") as DetailClaimViewController;

viewController.ClaimId = ClaimId;
AddChildViewController(viewController);
ScrollView.AddSubview(viewController.View);
viewController.DidMoveToParentViewController(this);

var sumsInsController = Storyboard.InstantiateViewController("sumsInsuredListViewController")
as SumsInsuredListViewController;
var sumsInsuredFrame = sumsInsController.View.Frame;

sumsInsuredFrame.X = View.Frame.Size.Width;
sumsInsController.View.Frame = sumsInsuredFrame;
sumsInsController.ClaimId = ClaimId;
sumsInsController.Title = $"Sums insured for {Title}";

AddChildViewController(sumsInsController);
ScrollView.AddSubview(sumsInsController.View);
sumsInsController.DidMoveToParentViewController(this);


ScrollView.ContentSize = new CGSize(View.Frame.Size.Width * 2, View.Frame.Size.Height - 49);

这是我“需要”工作的代码,因为它加载了导航栏和 ViewController 的自定义导航栏项目(正如我所说的这个“有效”但它显示了正确的导航bar 低于标准,它不能替代它):

var viewController = Storyboard.InstantiateViewController("detailClaimViewController") as DetailClaimViewController;

viewController.ClaimId = ClaimId;
AddChildViewController(viewController);
ScrollView.AddSubview(viewController.View);
viewController.DidMoveToParentViewController(this);

var navController = new UINavigationController();
var sumsInsController = Storyboard.InstantiateViewController("sumsInsuredListViewController")
as SumsInsuredListViewController;
var sumsInsuredFrame = sumsInsController.View.Frame;

sumsInsuredFrame.X = View.Frame.Size.Width;
sumsInsController.View.Frame = sumsInsuredFrame;

sumsInsController.ClaimId = ClaimId;
sumsInsController.Title = $"Sums insured for {Title}";
navController.AddChildViewController(sumsInsController);

AddChildViewController(navController);
ScrollView.AddSubview(navController.View);
navController.DidMoveToParentViewController(this);


ScrollView.ContentSize = new CGSize(View.Frame.Size.Width * 2, View.Frame.Size.Height - 49);

谢谢!

最佳答案

导航项是根据 UINavigationController 中包含的 View Controller 定义的。您可以通过不同的方式解决这个问题,但我的建议是使用自定义 UIViewController,它充当您要呈现的其他 UIViewController 的容器。

例如,您可以构建一个包含自定义导航栏和内容本身 View 的自定义 UIViewController,以充当自定义 UINavigationController。通过自定义转换,您可以模仿原始类的行为。

请引用this document为了更好地解释容器 View Controller 。

关于ios - 如何滑动查看维护的导航栏项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41240665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com