2012-05-25 26 views
0

我尝试在scrollView中制作水平导航菜单。对于菜单中的每个项目,我都有不同的图像。当我选择一个项目,我想改变这个项目的背景图片,但我不知道为什么我的代码不工作:ios水平滚动菜单 - 背景按钮选择

for (int i=0; i<12; i++) { 
      UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
      UIImage *normal=[UIImage imageNamed:@"icon1"]; 
      UIImage *selec=[UIImage imageNamed:@"icon1down"]; 
      [btn setFrame:CGRectMake(i*larg, 0, 42.0, 43.0)]; 
      [btn setBackgroundImage:normal forState:UIControlStateNormal]; 
      [btn setBackgroundImage:selec forState:UIControlStateSelected]; 

      [scrollCat addSubview:btn]; 
      cx+=42.0; 
    } 
    [scrollCat setContentSize:CGSizeMake(cx, 43)]; 

是否有这个代码是一件坏事?

回答

0

尝试UIControlStateHighlighted而不是UIControlStateSelected。 突出显示用户触摸按钮时的状态。 Selected仅用于某些控件,如段;一个自定义按钮(其中一个说,保持选中状态)可以/可以使用Selected。

the UIControl_Class docs at developer.apple.com(重点煤矿):

UIControlStateHighlighted

的控制的突出显示的状态。当在跟踪过程中以及触摸事件时触摸进入和退出时,控件进入此状态。 ...

UIControlStateSelected

选择控制的状态。 对于许多控件,此状态对行为或外观没有 影响。但其他子类(例如, UISegmentedControl类)可能会有不同的外观,具体取决于 的选定状态。 ...

+0

感谢您的回应,它运作良好,但只是当我点击一个项目。如果我想让按钮保持第二个背景图像,直到我点击另一个项目呢? – Astram56

+0

您可以选择并突出显示。请参阅http://stackoverflow.com/questions/1785008/keeping-a-uibutton-selected-after-a-touch – ckhan