1

我正在开发一个项目,该项目使用底部的标签栏来浏览我的应用程序的 5 个部分。其中一个部分加载一个地图视图,然后生成一个 web 视图。起初是用圆形矩形按钮完成的,但它们妨碍了视图,所以我决定切换到导航栏。在 Interface Builder 中,我插入了一个导航项,并在其中插入了两个条形按钮项(左侧和右侧)。通过从文件所有者拖动控件以触发与每个按钮关联的方法,我已经获得了两个按钮的功能。这工作正常并启动我的网络视图,但我希望能够做并且到目前为止还没有弄清楚如何在网络中将其中一个按钮更改为“完成”或“返回”按钮看法。我尝试以编程方式创建两个按钮,但都不会出现。

UIBarButtonItem *updatePosition = [[UIBarButtonItem alloc] initWithTitle:@"Update Position" 
style:UIBarButtonItemStylePlain target:self action:@selector(findMe)];

self.navigationItem.leftBarButtonItem = updatePosition;

[updatePosition release];

当我运行该应用程序时,该按钮不会显示在我使用 Xcode 插入的导航项上。如前所述,我可以让按钮出现的唯一方法是使用 Interface Builder 插入它们。但是,一旦我调出新视图,我就无法将左侧按钮更改为“返回”或“完成”按钮。我尝试运行此代码来更改我使用 IB 插入的 UIBarButtonItem 上的按钮样式和此代码

self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;

但无济于事。

4

1 回答 1

0

这里有一些实用方法可以帮助您:

+ (UIBarButtonItem *)setRightBarButtonItem:(SEL)action target:(id)sender withImage:(NSString *)imageName {
    UIImage *buttonImage = [UIImage imageNamed:imageName];
    UIBarButtonItem *buttonItem = [[[UIBarButtonItem alloc] initWithImage:buttonImage
                                                                    style:UIBarButtonItemStyleBordered
                                                                   target:sender
                                                                   action:action] autorelease];

    return buttonItem;
}

+ (UIBarButtonItem *)setRightBarButtonItem:(SEL)action target:(id)sender withBarButtonSystemItem:(UIBarButtonSystemItem)systemItem {
    UIBarButtonItem *buttonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem
                                                                                 target:sender
                                                                                 action:action] autorelease];

    return buttonItem;
}

用法:

// Done button.
self.navigationItem.rightBarButtonItem = [Utility setRightBarButtonItem:@selector(doneTapped:) target:self withBarButtonSystemItem:UIBarButtonSystemItemDone];
于 2011-03-15T02:52:32.060 回答