iphone-隐藏UIToolbar问题

iphone-隐藏UIToolbar问题,iphone,uitoolbar,Iphone,Uitoolbar,我看了其他答案,写了这样的代码: -(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 implem

我看了其他答案,写了这样的代码:

-(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只显示“其他”,而不是“如果”。。。 我没有设置tb1的布尔值。tb2.隐藏在任何地方,仅在此操作函数中

我还想工具栏消失时,点击按钮,工具栏已经出现


2011年8月31日编辑:

我听从了伽莫齐和马克斯纳的建议,但我仍然有同样的问题。有什么解决办法/建议吗


2011年10月16日编辑:


我认为这与alloc、init和autorelease有关。我会尽可能地研究它们,并发布我的答案来解决这个问题:)

您正在操作方法中分配UIToolbar对象吗?(或者这是一个打字错误)

hidden属性的默认值为“否”,因此在分配UIToolbar后,hidden属性的值为“否”-您需要将其显式设置为“是”才能将其更改为“隐藏”

我怀疑您希望在viewDidLoad方法中分配UIToolbar对象,并在那里将hidden属性设置为YES,然后按照上述方式实现操作方法,但不使用UIToolbar分配行

i、 e.在头文件中

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//
   }
}

您正在操作方法中分配UIToolbar对象?(或者这是一个打字错误)

hidden属性的默认值为“否”,因此在分配UIToolbar后,hidden属性的值为“否”-您需要将其显式设置为“是”才能将其更改为“隐藏”

我怀疑您希望在viewDidLoad方法中分配UIToolbar对象,并在那里将hidden属性设置为YES,然后按照上述方式实现操作方法,但不使用UIToolbar分配行

i、 e.在头文件中

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
,我建议使用
alpha
而不是
hidden
。所以
tb1.hidden=YES
变成
tb.alpha=0
hidden=NO
变成
alpha=1

比我的答案更好-删除我的答案!谢谢你的代码让它更进一步,但当我点击按钮三次时,应用程序会崩溃,即首先工具栏出现,然后消失,当第三次点击再次出现时,它崩溃了。嗨,再次,我在一个新的应用程序上尝试了你的方法,它当然可以工作。我想我的另一个应用程序上的大工具栏有问题。总有一天我会测试它,如果它有效,我会接受你的答案。为了澄清为什么会有效,原始问题中的代码总是在点击按钮时创建新的工具栏对象。这会产生意外的副作用,用这些新实例替换存储在
tb1
tb2
中的现有工具栏对象。由于默认情况下新工具栏不隐藏,
hidden
的值在
if
语句中选中时始终为
NO
,并且始终执行else块。现在,
if
语句正在检查新创建的工具栏的隐藏状态,而不是以前存储在tb1和tb2中的工具栏。比我的答案更好-删除我的答案!谢谢你的代码让它更进一步,但当我点击按钮三次时,应用程序会崩溃,即首先工具栏出现,然后消失,当第三次点击再次出现时,它崩溃了。嗨,再次,我在一个新的应用程序上尝试了你的方法,它当然可以工作。我想我的另一个应用程序上的大工具栏有问题。总有一天我会测试它,如果它有效,我会接受你的答案。为了澄清为什么会有效,原始问题中的代码总是在点击按钮时创建新的工具栏对象。这会产生意外的副作用,用这些新实例替换存储在
tb1
tb2
中的现有工具栏对象。由于默认情况下新工具栏不隐藏,
hidden
的值在
if
语句中选中时始终为
NO
,并且始终执行else块。瞧,
if
语句正在检查新创建的工具栏的隐藏状态,而不是tb1和tb2中存储的以前的工具栏。我尝试了你的建议,但应用程序在第三次单击后仍然崩溃。顺便问一下,你为什么建议alpha而不是hidden?哦,我不知道。你能提供一个链接吗?一个关于.hidden和.alpha的链接?我试过你的建议,但在第三次点击后应用程序仍然崩溃。顺便问一下,你为什么建议alpha而不是hidden?哦,我不知道。你能提供一个链接吗?一个关于.hidden和.alpha的链接?请不要发布一个新问题,它只包含一个旧问题的链接。谢谢@Michael我理解,但如何吸引人们关注我的问题?请参阅两种技巧。请不要发布仅包含旧问题链接的新问题。谢谢@迈克尔:我明白,但如何吸引人们关注我的问题呢?请参阅两种技巧。