2016-12-20 34 views
1

我试图实现滑动,以查看功能,就像Twitter的时刻:如何滑动以查看维护导航栏项目?

enter image description here

如果你看看上面,你会看到意见的水平滑块。我的要求有点不同...在水平滑块的顶部,我需要每个页面的自定义项目的常规导航栏。

刷卡查看我实施了一些小错误。请看看这个视频(这是我到目前为止已经完成):

http://sendvid.com/5j50p73z

正如你可以看到刷卡的观点功能是工作,但我仍然缺少一些重要的事情,即:

  1. 当滑动到它向上滚动下一个视图(看到视频)
  2. 我的意见都包含在导航控制器各自的导航栏项目。我看到它的方式,我需要像PushViewController没有后退按钮,但这将工作在两个方向......我有点在这里丢失如果我添加导航控制器而不是视图它显示栏,但低于当前现有的,而不是替代它。

关于如何解决这些问题的任何想法?

我使用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); 

这是我“需要”工作的代码,因为它加载了导航栏和那个自定义导航栏项目(正如我所说的那样“有效”,但它显示了标准导航栏下方的正确导航栏,它不会显示' t代替它):

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); 

谢谢!

回答

1

导航项目是根据UINavigationController中的包含的视图控制器定义的。你可以用不同的方式解决这个问题,但我的建议是使用一个自定义的UIViewController作为你想要呈现的其他UIViewController的容器。

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

请参阅this document以获得对容器视图控制器的更好的解释。

+0

Gianluca,谢谢你的回答。你愿意扩展吗?也许有一个例子?谢谢 – eestein

+0

对不起,答案不是很清楚......我会编辑......给我一秒钟。 –

+0

没问题,再次感谢:) – eestein