Внешний вид левой панели слайдов в виде facebook должен появляться во всех контроллерах просмотра

В моем первом представлении приложения iphone я реализовал макет панели слайдов типа Facebook. Теперь я хочу реализовать это на всех контроллерах представлений (экранов) в приложении, означает, что независимо от вида левая панель слайдов должна появляться при нажатии кнопки меню вверху во всех представлениях.

Мое приложение содержит 25-30 viewcontrollers, и мой макет ползунка должен появиться во всех представлениях.

Может ли кто-нибудь предложить, как я могу включить выше FB Layout во все виды?

заранее спасибо

Рама

3
nl ja de
Я не вижу никакого действительного пункта, реализуя макет слайдов типа Facebook по своему усмотрению. Есть много слайдеров с открытым исходным кодом, которые вы можете использовать в проекте. Просто проверьте приведенную ниже ссылку. cocoacontrols.com/controls/ddmenucontroller . Если вам действительно нужно использовать свой код, вы можете получить эту идею, посмотрев исходный код существующих меню.
добавлено автор Inoka, источник

4 ответы

Простой, один контроллер представления, в котором вы реализовали макет FB и работает. Сделайте его базовым классом поверх UIViewController . А что касается остальных ViewControllers, наследуйте их от созданного вами MasterClass. Выполнение этого приведет к тому, что жест скольжения приведет к появлению ползунка для всех ваших 30 контроллеров.

<Сильный> ИЗМЕНИТЬ

Давайте посмотрим, у нас есть UIViewController, теперь, прежде всего, вы создаете подкласс UIViewController: скажем, FBViewController. В этом FBViewController вы реализуете FBLayout таким образом, что салфетки и все работают .. в этом. Попробуйте приложение сначала, используя только этот FBViewController как rootViewController и проверить все функциональные возможности. Когда все работает нормально, расти на нем. Я имею в виду это.

Предположим, вы создаете приложение с вкладками, в котором все три вкладки должны иметь один и тот же стиль FBLayout. Затем выполните следующие действия.

  1. Создайте FBViewController, он наследует от UIViewController (с использованием шаблона подкласса UIViewController, также проверьте кнопку генерации XIB) также имеет XIB для него FBViewController.XIB (полностью реализует FBLayout в нем. Это будет ваш базовый класс)

  2. Затем снова создайте еще три класса ViewController (FirstViewController, SecondViewController, ThirdViewController) из шаблона подкласса UIViewController, но для этих трех не проверяйте кнопку генерации XIB. эти три будут использовать XIB базового класса FBViewController (если вам интересно, как это сделать, переходите к шагу 3:))

  3. Перейдите в заголовочный файл класса FirstViewController, который вы создали, там вы можете увидеть @interface FirstViewController: UIViewController заменить его на @interface FirstViewController: FBViewController , но до он импортирует файл FBViewController.h в файл заголовка. Повторите то же самое для других двух классов - SecondViewController, ThirdViewController. Поскольку эти три будут наследоваться от FBViewController. В своем viewDidLoad [super viewDidLoad] загрузится FBViewController и сгенерирует представление. после [super viewDidLoad]; вы можете реализовать собственные методы ur.

  4. В трех классах просто измените метод initWithNibName , чтобы изменить имя и заголовок панели вкладок.

  5. В appDelegate перейдите в метод didFinishLaunching и поместите эти три контроллера представления в tabBarController , установите tabBarController как rootViewController.

И мы закончили. Если ваш FBViewController работает нормально. Вы увидите, что все три класса ведут себя одинаково. Тханкс к власти Наследства.

Cheers, немного поиграйте, получайте удовольствие.

4
добавлено
Привет @ croyneaus4u, я не понимаю вас. Не могли бы вы рассказать. Пожалуйста, дайте мне прототип для работы. Я просто начинаю работу с объективом c и iphone.
добавлено автор Ramu Pasupuleti, источник
Привет @ croyneaus4u, спасибо за подробное объяснение. Я могу получить это, как вы предложили. Но, в методе выше, у меня есть проблема. В реализованном макете facebook при нажатии/переключении верхнего слоя должен появиться нижний слой. Итак, у меня было два вида в одном контроллере. Теперь, когда я хочу перейти к другому контроллеру представления, должен перемещаться только мой верхний уровень. Возможно ли, чтобы нижний слой оставался постоянным во всех контроллерах представлений. Спасибо за ответ..
добавлено автор Ramu Pasupuleti, источник
Я редактирую свой ответ, проверяю
добавлено автор croyneaus4u, источник
глядя на ваше требование, следуя политике сдерживания, было бы намного лучше, как было предложено @kjelelokk. для навигации только в части обзора лучше использовать один контроллер представлений в качестве контейнера. И от их добавления и удаления других viewControllers в качестве дочерних контроллеров и их соответствующих представлений. А также добавьте анимацию для удаления и добавления
добавлено автор croyneaus4u, источник

У меня такая же проблема. Я использовал меню в стиле facebook и нуждался в нем во всех контроллерах представлений.

Вы можете использовать Контейнерный контроллер. Контейнер-контроллер может иметь базовый макет, который я определил в наконечнике, содержащем панель навигации и элемент кнопки панели, чтобы переключить меню, а затем добавить контроллеры дочерних элементов и удалить их по мере необходимости. Таким образом, вы можете бросить любой контроллер вида, который вам нужен, в контроллер контейнера, и он отобразит его.

Вы также можете добавить управление жестов, чтобы легко открывать/закрывать меню.

Вам нужно будет сделать контроллер контейнера самостоятельно, он не является стандартным. Я думаю, что это лучшее решение, чем наследование, поскольку, если вы используете наследование, вы не можете создать, например, UITableViewController, все ваши контроллеры будут иметь тип мастер-класса yuor. Конечно, вы можете это исправить с делегатами.

It may sound a bit tricky, but see this tutorial which I used: http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

Это было не так сложно.

EDIT: вы можете просто использовать UINavigationController. Просто установите контроллер базового представления на контроллер вида, который вы хотите отобразить, и вы можете предотвратить его добавление кнопки возврата и т. Д. На панель навигации, переопределив методы по умолчанию. Сделайте UINavigationController как rootNavigationController . Может быть проще.

3
добавлено

Я настоятельно рекомендую использовать решение с открытым исходным кодом, которое обрабатывает все крайние кейсы для вас - оно является самым простым, самым надежным и удобным для обслуживания (поскольку сообщество будет поддерживать его в актуальном состоянии). ViewDeck кажется самым популярным решением, хотя у меня также был успех с PPRevealSideViewController . Оба они обеспечивают очень надежную реализацию, которая занимает много времени, чтобы сделать сам (например, вы можете дополнительно активировать прокрутку на панели навигации или даже области содержимого, чтобы открыть меню). Кроме того, они отделяют логику скольжения и открытое меню (которое может быть любым контроллером вида, который вам нравится, но, скорее всего, контроллером табличного представления) из ваших других контроллеров представлений. Таким образом, любой диспетчер представлений может иметь боковое меню без дублирования какого-либо кода - разделение беспокойства отлично :)

2
добавлено

Вы можете создать SharedInstance для класса SideView. Я делаю то же самое для iAD, чтобы показать приложение. См. Ссылку iAdSuite, в которой BannerViewController является SharedInstance, поэтому они легко используются для всех View Controller

http://developer.apple.com/library/ios/ # samplecode/iAdSuite/Объявления/TabbedBanner_TabbedBanner_BannerViewController_m.html

1
добавлено