3

我在 iPhone 应用程序的第一个视图中实现了 Facebook 类型的左滑条布局。现在,我想在应用程序中的所有视图控制器(屏幕)中实现这一点,这意味着无论视图如何,单击所有视图顶部的菜单按钮时左滑动条都应该出现。

我的应用程序包含 25-30 个视图控制器,我的滑动条布局应该出现在所有视图中。

任何人都可以建议,我如何在所有视图中包含上面的 FB 布局

提前致谢

拉姆

4

4 回答 4

4

简单,您已经实现FB layout并正在工作的一个视图控制器。使其成为UIViewController. 至于其余的所有 ViewController,从您刚刚创建的 MasterClass 继承它们。这样做会使滑动手势对所有 30 个视图控制器都可用。

编辑

让我们看看,我们有 UIViewController,现在首先你创建一个 UIViewController 的子类:比如 FBViewController ..在这个 FBViewController 中你实现 FBLayout 以便滑动和所有工作..在它上面 ..首先使用这个 FBViewController 测试你的应用程序作为 rootViewController 并检查所有功能。一旦一切正常,继续发展。我的意思是这个。

假设您正在创建一个选项卡式应用程序,其中所有三个选项卡都应该具有相同的 FBLayout 样式。然后执行这些步骤。

  1. 创建 FBViewController,它继承自 UIViewController(使用 UIViewController 子类模板,还检查生成 XIB 按钮)也有一个 XIB FBViewController.XIB(在其中完全实现 FBLayout。这将是您的基类)

  2. 然后从 UIViewController 子类模板再次创建另外三个 ViewController 类(FirstViewController、SecondViewController、ThirdViewController),但是对于这三个不要检查生成 XIB 按钮。这三个将使用基类 FBViewController 的 XIB(如果您想知道如何,请转到第 3 步 :))

  3. 转到您创建的 FirstViewController 类的头文件,在那里您可以看到@interface FirstViewController: UIViewController将其替换为@interface FirstViewController: FBViewController,但在将 FBViewController.h 导入头文件之前。对其他两个类重复相同的操作 - SecondViewController、ThirdViewController。由于这三个将继承自 FBViewController。在他们viewDidLoad [super viewDidLoad]将加载 FBViewController 并生成视图。之后[super viewDidLoad];你可以实现你自己的方法。

  4. 在这三个类中只需更改initWithNibName方法来更改标签栏名称和标题。

  5. 在 appDelegate 中转到didFinishLaunching方法并将这三个视图控制器放在一个中tabBarController,将其设置tabBarController为 rootViewController。

我们完成了。如果你FBViewController的工作正常。您将看到所有三个类的行为方式相同。感谢传承的力量。

干杯,玩一点,玩得开心。

于 2013-02-11T10:31:05.047 回答
3

我有同样的问题。我使用的是 facebook 风格的菜单,并且在所有视图控制器中都需要它。

您可以使用容器控制器。容器控制器可以具有我在 nib 中定义的基本布局,其中包含导航栏和用于切换菜单的栏按钮项,然后添加子视图控制器并根据需要删除它们。这样,您可以将所需的任何视图控制器扔给容器控制器,它会显示它。

您还可以添加手势控制以轻松滑动打开/关闭菜单。

您必须自己制作 Container 控制器,这不是标准的。我认为这是比继承更好的解决方案,因为如果您使用继承,则无法制作例如 UITableViewController,您的所有控制器都将属于您的主类的类型。当然,无论如何你都可以通过委托来解决这个问题。

听起来可能有点棘手,但请参阅我使用的本教程:http: //www.cocoanetics.com/2012/04/ contains-viewcontrollers/

其实没那么难。

编辑:您也可以使用 UINavigationController 。只需将基本视图控制器设置为您要显示的视图控制器,您就可以通过覆盖默认方法来防止它将后退按钮等添加到导航栏。将 UINavigationController 设为rootNavigationController. 可能更简单。

于 2013-02-14T10:30:50.647 回答
2

我强烈建议使用为您处理所有边缘情况的开源解决方案 - 它是最简单、最强大和最可维护的(因为社区会为您提供最新信息)。ViewDeck似乎是最受欢迎的解决方案,尽管我在PPRevealSideViewController上也取得了成功. 它们都提供了一个非常健壮的实现,需要很长时间才能完成(例如,您可以选择在导航栏甚至内容区域上启用滑动以打开菜单)。此外,它们将滑动逻辑和显示的菜单(可以是您喜欢的任何视图控制器,但很可能是表格视图控制器)与您的其他视图控制器分开。这样,任何视图控制器都可以有一个侧面菜单,而无需复制任何代码 - 关注点分离很棒:)

于 2013-02-13T15:20:13.293 回答
1

您可以为 SideView 类创建一个 SharedInstance。我正在为 iAD 做同样的事情来展示整个应用程序。请看 iAdSuite 的链接,其中 BannerViewController 是 SharedInstance 所以它们很容易用于所有 View Controller

http://developer.apple.com/library/ios/#samplecode/iAdSuite/Listings/TabbedBanner_TabbedBanner_BannerViewController_m.html

于 2013-02-14T13:15:23.807 回答