1

我正在尝试为基于拆分视图的应用程序创建基础,因为在过去的几天里,我花了一段时间查看和尝试那些不起作用、不完整或过时的教程。

我应该遵循哪些步骤,以及在我设置了基础知识之后:

  1. 如何更改工具栏上按钮的名称?
  2. 我想包括一个弹出菜单;如何更改该菜单顶部的名称?
4

1 回答 1

4

本教程适用于初学者。如果您已经在 Objective-c 中编码了一段时间,那么您可能不会在这里学到任何东西。

在本教程之后,您将拥有一个基于拆分视图的应用程序,该应用程序具有三个(或更多)不同的视图,以及用于导航应用程序的弹出菜单。

第 1 步:获取一些 Apple 代码

从 Apple 获取(下载)MultiDetailsView 示例代码。 http://developer.apple.com/library/ios/#samplecode/MultipleDetailViews/Introduction/Intro.html

在此处输入图像描述

这段代码为我们提供了一个基于 splitview 的应用程序,它有 2 个不同的视图。除非您不知道此示例代码的存在,否则这没什么大不了的。


第 2 步:确保一切正常

在 Xcode 中打开项目。构建,然后运行项目以确保一切正常。当我尝试构建和运行应用程序时,我遇到了这个错误:

XCode could not find a valid private certificate/valid key-pair for this profile in your keychain

我意识到我的证书已经过时了(我猜这只是因为代码直接来自苹果?)。如果您碰巧遇到同样的问题,请查看线程。或者,您可以从应用商店的 Xcode 下载最新版本。

无论如何,如果一切正常,您应该有以下 2 个视图: 在此处输入图像描述 在此处输入图像描述


第 3 步:添加我们自己的视图

第一部分:创建文件

现在是添加更多视图的时候了(这可能是您正在寻找的)。

转到文件-> 新文件...

如果您使用Xcode 4:选择 Objective-C 类,然后为子类选择 UIViewController,并确保选中“针对 iPad”和“使用 XIB 用于用户界面”。 在此处输入图像描述

如果您使用的是Xcode 3:选择 UIViewController 子类,然后选中“Targeted for iPad”和“With XIB for user interface”

在此处输入图像描述

这些文件将出现在您的左侧菜单中,如果它们位于错误的位置,您可以将它们拖到适当的目录(.h 和 .h 应该在 Classes 下,.xib 应该在资源下)。

在此处输入图像描述

首先,将 SecondDetailViewController.h 的内容复制到您的 .h 文件中,并将 SecondDetailViewController.m 的内容复制到您的 .m 文件中。确保它最初说SecondDetailViewController的地方现在有你的文件名。

我的 .h 文件: 在此处输入图像描述

我的 .m 文件: 在此处输入图像描述


b 部分:RootViewController.m 内容

接下来,打开 RootViewController.m

目前,正在导入 3 个原始 .h 文件。我们需要添加我们刚刚创建的那个。

在此处输入图像描述

接下来,进入 tableView 方法,将返回值从 2 更改为 3。每次添加新视图时,都需要增加这个数字!(即,如果您在完成本教程后添加另一个视图,请将其更改为 4)。本质上,这个方法只是返回你有多少视图。

在此处输入图像描述

其下方的方法处理将在您的菜单中显示的内容。我们需要在这里做一些改变。由于我们在 if/else 语句中添加了另一个选项,因此else必须将原始选项更改为if else,并且我们必须提供一个条件,在我们的例子中,它只是检查它是否是第二行(在索引 1 处)(indexPath.row == 1)

在此处输入图像描述

下一个方法处理要显示的视图。添加另一个if语句。在第一行,我有YourViewHereViewController绿色,你应该有你的 .h / .m 文件的名称。然后我@"YourViewHereViewController"在红色的地方,你应该有你的 .xib 文件的名称。

在此处输入图像描述


c部分:xib

最后但同样重要的是,我们需要处理我们的 xib 文件。首先打开 SecondDetailView.xib 并复制视图。然后将其粘贴到您创建的 .xib 文件中(删除可能首先存在的任何内容)。您可以通过双击文本来更改视图的标题。

在此处输入图像描述

最后要做的是行连接。按住 Control 并单击 Files's Owner,然后将其拖到工具栏并选择工具栏(这就是 RootController 按钮将出现在工具栏上的方式)。

在此处输入图像描述

再次按住 Control 单击 File's Owner,然后将其拖到视图并选择视图。

在此处输入图像描述


如果你现在运行它,一切都应该工作!


以下是我在这一点上的一些问题:

问:如何更改工具栏上按钮的名称? A: 工具栏(以及按钮)是从 RootViewController.m 文件控制的,找这个方法

- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {

    // Keep references to the popover controller and the popover button, and tell the detail view controller to show the button.
    barButtonItem.title = @"Root View Controller";
    self.popoverController = pc;
    self.rootPopoverButtonItem = barButtonItem;
    UIViewController <SubstitutableDetailViewController> *detailViewController = [splitViewController.viewControllers objectAtIndex:1];
    [detailViewController showRootPopoverButtonItem:rootPopoverButtonItem];
}

请注意barButtonItem.title = @"Root View Controller";,将 更改@为您想要的任何内容!注意:如果您将此字段留空,则该按钮将不会出现!

问:如何更改弹出菜单顶部的名称? 在此处输入图像描述

A:添加以下行来声明/更改名称。self.title = @"Menu";,在您的 RootViewController.m 文件中,在- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {方法中。

在此处输入图像描述

于 2012-07-06T19:31:01.220 回答