2016-12-20 64 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