3

从我在 SDK 中找到的 spliview master/detail 示例开始,我最终得到了一个 iPad 应用程序,它的左侧有一个横向主控,而纵向一个名为“主控”的按钮允许显示主控。

景观大师

肖像大师

要显示此按钮,请使用以下代码

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
    barButtonItem.title = @"Master";
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
    self.masterPopoverController = popoverController;
}

在我的应用程序中,主视图将是某种搜索视图,因此我希望名为 master 的按钮显示系统提供的搜索图标。

首先,我根本不知道如何以编程方式(在运行时)将系统图标添加到按钮?我知道如何在开发时而不是在运行时在 Xcode 的情节提要中选择它。

由于我不知道该怎么做,为了测试目的,我在栏的顶部添加了一个右栏按钮,我只是将其图像分配给主按钮,如下所示:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
    //barButtonItem.title = @"Master";
    barButtonItem.image = searchBarButton.image;
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
    self.masterPopoverController = popoverController;
}

结果是主按钮根本不显示。

在此处输入图像描述

我再说一遍,这只是为了测试目的,最后我想简单地分配系统提供的搜索图标。

所以我的两个问题是:

  1. 为什么主按钮不显示?我是否有义务为此按钮使用“文本”
  2. 如何将系统提供的图标(在运行时)分配给这样的按钮?

任何人都可以帮助我吗?

4

1 回答 1

2

您需要初始化条形按钮项。您可以使用以下代码执行此操作,将目标和操作参数替换为您的目标和函数。

self.barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Master" style:UIBarButtonItemStylePlain target:self action:@selector(action)];
[self.navigationItem setLeftBarButtonItem:_barButtonItem animated:YES];

如果要使用系统项,请使用以下代码,将 initWithTitle 替换为 initWithBarButtonSystemItem。再次替换目标和操作参数。

self.barButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(action)];
[self.navigationItem setLeftBarButtonItem:_barButtonItem animated:YES];

您还必须确保在@interface 下包含 barButtonItem。

@interface ViewController ()
@property UIBarButtonItem *barButtonItem;
@end
于 2014-07-08T23:50:34.830 回答