如何将 uitoolbar 添加到 uitableviewcontroller?
Posted
技术标签:
【中文标题】如何将 uitoolbar 添加到 uitableviewcontroller?【英文标题】:How to add uitoolbar to uitableviewcontroller? 【发布时间】:2010-03-28 18:29:03 【问题描述】:我有一个 UITableViewController,我想用一个按钮将 UIToolbar 添加到其中。在
- (void)viewDidLoad;
我有的UITableViewController方法:
- (void)viewDidLoad
[super viewDidLoad];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(pressButton1:)];
self.navigationItem.title = @"Some title";
self.navigationItem.leftBarButtonItem = button;
不幸的是,当我运行我的应用程序时,我没有看到工具栏。 有什么提示吗?我应该再做点什么吗?
【问题讨论】:
【参考方案1】:如果视图控制器没有显示在 UINavigationController
中,则视图控制器的 navigationItem
属性将毫无用处。
如果您的视图控制器位于导航控制器内,我不知道问题出在哪里。
否则,您可以使用UINavigationItem
,但您需要自己创建UINavigationBar
。
在 Interface Builder 中(添加 UINavigationBar
并添加 UINavigationItem
,然后将 UINavigationItem
连接到声明您的视图控制器的属性插座(您不需要连接 Bar)。
或在您的代码中:
UIBarButtonItem *item = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(pressButton1:)];
UINavigationItem* navItem = [[UINavigationItem alloc] init];
navItem.rightBarButtonItem = item;
navItem.title = @"Your title";
naviBar = [[UINavigationBar alloc] init];
naviBar.items = [NSArray arrayWithObject:navItem];
naviBar.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, 44.0);
[self.view addSubview:naviBar];
[navItem release];
【讨论】:
就是这样!我不知道我需要创建 UINavigationItem。我以为 UITableView 已经有一个了。感谢@FenchKiss 开发人员!【参考方案2】:您的方法需要自动释放:
- (void)viewDidLoad
[super viewDidLoad];
UIBarButtonItem *button = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressButton1:)] autorelease];
self.navigationItem.title = @"Some title";
self.navigationItem.leftBarButtonItem = button;
您的代码本身没有问题。您的问题表明您想将 UIToolBar 添加到您的视图中?真的吗?或者你只是想为 UITableView 的 NavigationItem 添加一个按钮?
【讨论】:
谢谢乔丹!一开始我想把 UIToolbar 和 UITable View 一起放在我的视图中,但后来我发现我可以利用 UITTableViewController 中的 NavigationItem 并且我得到了上面的代码。如果没有任何问题,那么有什么想法为什么我看不到工具栏? 你检查你的 IB Connections 吗?显示什么?也许你可以发布一些代码?【参考方案3】:如果您没有有使用 UITableViewController 并且没有在您的应用程序中使用 UINavigationController,您可以将您的视图控制器设置为带有工具栏和表格视图的常规 UIViewController。
要在 IB 中执行此操作,请拖出 UIViewController 对象并添加工具栏和表格视图。为两者连接插座,并将 tableview 的委托和数据源设置为 Files Owner。添加任何其他工具栏项或按钮,并为它们提供出口和方法,如果您需要它们用于按钮等。在您的 ViewController.h 文件中,确保您注册它以符合 UITableViewDataSource 和 UITabBarDelegate:
@interface ViewController : UIViewController <UITableViewDataSource, UITabBarDelegate>
从那里,像往常一样构建您的 tableview 委托和数据源方法,并为您添加到工具栏的任何按钮编写按钮操作方法。
【讨论】:
【参考方案4】:您只是没有显示工具栏。默认情况下它是隐藏的。要修复它,您只需输入以下代码:
self.navigationController.toolbarHidden = NO;
我试过了,效果很好。只需确保放入实现文件的 viewDidLoad 方法即可。
【讨论】:
以上是关于如何将 uitoolbar 添加到 uitableviewcontroller?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将 UIButton 添加到 UIToolBar?
如何将附加的阴影添加到 uinavigationbar 和 uitoolbar
如何将 UIToolbar 添加到 UISplitViewController 的两个视图中?