以编程方式将 UILabel 添加到工具栏
Posted
技术标签:
【中文标题】以编程方式将 UILabel 添加到工具栏【英文标题】:Programmatically add UILabel to toolbar 【发布时间】:2012-05-21 21:35:01 【问题描述】:我正在尝试以编程方式将UILabel
添加到我的UIToolBar
中,但它似乎没有出现。这就是我对代码所做的事情。
- (void) viewWillAppear:(BOOL)animated
// Create custom toolbar at top of screen under navigation controller
[matchingSeriesInfoToolBar setFrame:CGRectMake(0, 60, 320, 30)];
matchingSeriesInfoToolBar = [UIToolbar new];
[matchingSeriesInfoToolBar sizeToFit];
CGFloat toolbarHeight = 30;
CGRect mainViewBounds = [[UIScreen mainScreen] applicationFrame];
[matchingSeriesInfoToolBar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds), 0, CGRectGetWidth(mainViewBounds), toolbarHeight)];
matchingSeriesInfoToolBar.tintColor = [UIColor darkGrayColor];
[self.view addSubview:matchingSeriesInfoToolBar];
// Create size of uitableview (to fit toolbar.
[matchingSeriesTableView setFrame:CGRectMake(0, 30, self.view.frame.size.width, self.view.frame.size.height - 30)];
[self.view addSubview:matchingSeriesTableView];
// Ad UILabel to the toolbar
UIBarButtonItem *textFieldItem = [[UIBarButtonItem alloc] initWithCustomView:manufSelectionLabel];
matchingSeriesInfoToolBar.items = [NSArray arrayWithObject:textFieldItem];
manufSelectionLabel.text = @"Hello World!";
[super viewWillAppear:animated];
几乎我已经创建了一个自定义工具栏,我已经从屏幕底部更改了通常的位置,出现在UINavigationController
下,这也像这样添加到视图中,因此它在视图中正确动画过渡..
之后我创建了 tableview 的大小,以便它出现在自定义工具栏之后..
然后从那里我尝试将UILabel
添加到工具栏.. 但由于某种原因它无法正常工作。
任何帮助将不胜感激。
【问题讨论】:
仅供参考:此代码应位于viewDidLoad
或每次您的视图出现时(可能包括在另一个视图上按下后退按钮!)您将获得另一个工具栏等:)
哦,是的!抱歉,我之前一直在制作导航工具栏动画,因此曾尝试在此工作..但我从未从那里获取代码..我非常努力地试图让这个工具栏运行,但我没有看到。感谢您的提醒
【参考方案1】:
您必须在某处实际创建标签。这段代码运行良好。
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:toolbar];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];
label.backgroundColor = [UIColor clearColor];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:label];
toolbar.items = [NSArray arrayWithObject:item];
label.text = @"Hello World";
【讨论】:
感谢这与我当前的工具栏完美配合.. 我只是跳过了前两行,然后在倒数第二行将工具栏更改为 mytoolbarname 并且效果很好.. 非常感谢。 如果工具栏上有按钮,标签会吃掉按钮。 @Shailesh 我不确定你所说的“吃掉按钮”是什么意思。如果您在 IB 中添加了一个按钮,那么您需要确保该按钮仍在 toolbar.items 数组中。如果标签覆盖了按钮,则需要确保其大小和位置正确。【参考方案2】:在您发布的代码中,您从未创建过UILabel
。您的评论说 工具栏上的广告 UILabel 但您随后继续使用自定义视图 manufSectionLabel
制作 UIBarButtonItem
。
创建manufSectionLabel
的代码在哪里?
PS 这行什么都不做:
[matchingSeriesInfoToolBar setFrame:CGRectMake(0, 60, 320, 30)];
因为此时matchingSeriesInfoToolbar 是nil
- 你还没有成功!
【讨论】:
opps matchingSeriesInfoToolBar 应该已经被删除了,它是我的旧代码的一部分,我正在乱搞,但是当我准备好这个问题时,我就把它留在了。至于你问题的第一部分,我是在头文件中为 uilable 设置 getter 和 setter .. 然后我应该调用 ** manufSelectionLabel.text = @"Hello World!";** 在我尝试将标签添加到 uibarbutton 之前? 我添加子视图等的概念真的很缺乏。你有任何建议的教程,阅读材料,我可以得到帮助加强我的那部分代码。 拥有 getter 和 setter 并不会真正创建和配置标签。你必须把它分配到某个地方。如果您确实在 getter 中创建了标签,那么您必须使用 getter 而不是直接访问 ivar(即 self.manufSectionLabel)。以上是关于以编程方式将 UILabel 添加到工具栏的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 UILabel 添加到 CollectionViewCells
以编程方式将 UILabel 添加到 UICollectionViewCell