如何将 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 添加到 UIToolbar?

如何以编程方式将 UIButton 添加到 UIToolBar?

如何将附加的阴影添加到 uinavigationbar 和 uitoolbar

如何将 UIToolbar 添加到 UISplitViewController 的两个视图中?

将 editButtonItem 连接到 UITableView

以编程方式将项目添加到 UIToolbar 不起作用