iOS ipad splitview主按钮带有图标

时间:2013-01-10 07:12:46

标签: uibutton icons master-detail uisplitview

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

Landscape Master

Portrait Master

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

- (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;
}

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

enter image description here

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

所以我的两个问题是:

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

1 个答案:

答案 0 :(得分:2)

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

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