制作隐藏按钮的麻烦可见

时间:2012-02-22 13:55:47

标签: iphone

以下代码我写的是隐藏viewDidLoad中的一些按钮。这里的按钮正在隐藏

- (void)viewDidLoad
{
 for (int i = 100; i<117; i++) 
    {
        UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i];
        UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i];
        UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i];
        smileyFields.hidden = YES;
        smileyButton.hidden = YES;
    }  
}

现在正在进行以下操作,使按钮可见。但按钮不可见

-(IBAction)editButton:(id)sender
{
 for (int i = 100; i<117; i++) 
    {
        UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i];
        UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i];
        UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i];
        [smileyFields setHidden:NO];   //TextFields Not Visible 
        [smileyButton setHidden:NO];  //Buttons Not Visbile
   }

}

2 个答案:

答案 0 :(得分:1)

如果您有多个具有相同标记的视图,则函数viewWithTag将只返回一个视图,因此如果您调用此视图3次,则始终获得相同的视图。

要执行您想要的操作,您可以迭代所有子视图并检查标记:

for (UIView *aView in scrollView.subviews) {
    if (aView.tag >= 100 && aView.tag < 117) {
        aView.hidden = NO;
    }
}

答案 1 :(得分:0)

您是否在Interface Builder中构建视图控制器?如果是这样,请将要隐藏的每个内容的标记设置为不同的数字:尝试简单的内容,如1,2,3等。如果您在代码中构建,请设置tag属性。记住你的最大标签号(让我们假设它是4)。

然后将以下内容添加到.h:

- (void)setTaggedViewsHidden:(BOOL)hidden;

以及你的.m:

- (void)setTaggedViewsHidden:(BOOL)hidden {
  for (NSInteger tag = 1; tag <= 4; tag++) {
    [scroll viewWithTag:tag].hidden = hidden;
  }
}

viewDidLoad调用中,就像这样:

[self setTaggedViewsHidden:YES];

并在editButton:选择器中将其命名为:

[self setTaggedViewsHidden:NO];

请务必调整setTaggedViewsHidden中的代码以匹配您正在使用的代码。执行此操作的最佳方法是#define最小和最大标记的常量,并使用for循环中的常量。