我看过其他的答案并写了这样的代码:
-(IBAction)tbutton:(id)sender
{
tb1 = [[[UIToolbar alloc] init] autorelease];
tb2 = [[[UIToolbar alloc] init] autorelease];
if (tb1.hidden == YES && tb2.hidden == YES)
{
tb1.hidden = NO;
tb2.hidden = NO;
//toolbars implementation codes here//
}
else
{
tb1.hidden = YES;
tb2.hidden = YES;
//toolbars implementation codes here//
}
}
我不想在加载应用程序时显示两个工具栏,但我想在点击UIButton *toolbarbutton的选择器动作tbutton:时显示工具栏,但它什么也没发生。NSLog只显示"else",没有"if"…我还没有设置tb1的布尔值。和tb2。隐藏在任何地方,只在这个动作函数中。
我还希望工具栏消失时,点击按钮和工具栏已经出现。
编辑2011年8月31日:
我遵循gamozzii和Maxner的建议,但我仍然有同样的问题。有解决这个问题的方法/建议吗?
编辑2011年10月16日:
我认为它与alloc, init和autorelease有关。我将尽我所能研究他们,并发表我的答案来解决这个问题:)
你在你的操作方法中分配你的工具栏对象吗?(还是打错了?)
隐藏属性的默认值是NO,所以在你分配工具栏后,它将有一个"NO"的值用于隐藏-你需要显式地将其设置为YES以将其更改为隐藏。
我怀疑你想在你的viewDidLoad方法中分配你的UIToolbar对象,并在那里设置隐藏属性为YES,然后像上面一样实现你的动作方法,但没有UIToolbar分配行。
。在头文件
IBOutlet UIToolbar *tb1;
IBOutlet UIToolbar *tb2;
@property (nonatomic, retain) IBOutlet UIToolbar *tb1;
@property (nonatomic, retain) IBOutlet UIToolbar *tb2;
实现文件
-(void)viewDidLoad {
self.tb1 = [[UIToolbar alloc] init] autorelease];
self.tb2 = [[UIToolbar alloc] init] autorelease];
self.tb1.hidden = YES;
self.tb2.hidden = YES;
}
-(IBAction) tbutton:(id)sender {
if (tb1.hidden == YES && tb2.hidden == YES)
{
tb1.hidden = NO;
tb2.hidden = NO;
//toolbars implementation codes here//
}
else
{
tb1.hidden = YES;
tb2.hidden = YES;
//toolbars implementation codes here//
}
}
我建议使用alpha
而不是hidden
。所以tb1.hidden = YES
变成了tb.alpha = 0
hidden = NO
变成了alpha = 1