2016-12-20 2 views
1

Я пытаюсь реализовать салфетки для просмотра функциональности, как и моменты щебетать:Как прокрутить, чтобы просмотреть элементы навигационной панели?

enter image description here

Если вы посмотрите на верхней части вы увидите горизонтальный слайдер с видом. Мои требования немного разные ... Вдоль этого горизонтального слайдера мне нужна моя обычная панель навигации с пользовательскими элементами каждой страницы.

Салфетка для просмотра Я реализовал некоторые незначительные ошибки. Пожалуйста, обратите внимание на это видео (это то, что я сделал до сих пор):

http://sendvid.com/5j50p73z

Как вы можете видеть функциональные виды красть работает, но я до сих пор отсутствуют некоторые важные вещи, а именно:

  1. Когда ударяя к следующему представлению его прокрутка вверх (если смотреть на видео)
  2. Моих взглядов все содержащиеся в навигационных контроллерах с их соответствующими элементами NavBar. То, как я это вижу, мне понадобится что-то вроде PushViewController без кнопки «Назад», но это будет работать в обоих направлениях ... Я немного потерял здесь. Если добавить контроллер навигации вместо представления, он отобразит панель, но ниже текущей существующий, не заменяя его.

Любые идеи о том, как их решить?

Я занимаюсь разработкой с использованием Xamarin.iOS, но если вы можете привести пример, используя быстрые я думаю, я мог бы попытаться перевести это :)

Это то, что я до сих пор:

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 (как я уже сказал, этот «работает», но показывает правильную панель навигации ниже стандартной, 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 s, который вы хотите представить.

Например, вы можете создать пользовательский UIViewController, который содержит вашу настраиваемую панель навигации и представление для самого контента, чтобы действовать как пользовательский UINavigationController. С пользовательскими переходами вы можете имитировать поведение исходного класса.

Для получения более подробного пояснения на контроллерах контейнера обратитесь к this document.

+0

Джанлука, благодарю вас за ответ. Не могли бы вы расширить это? Может быть, с примером? Спасибо – eestein

+0

Извините, ответ не очень ясен ... Я отредактирую ... дай мне секунду. –

+0

Нет проблем, спасибо еще раз :) – eestein

Смежные вопросы