【问题标题】:Styling a button that was created in interface builder对在界面生成器中创建的按钮进行样式设置
【发布时间】:2013-03-02 04:56:05
【问题描述】:

如果您有一个在 Interface Builder 中创建的按钮,并且已经指向另一个 viewController,您如何在代码中定位该按钮,以便为代码中的正常和选定状态提供自定义背景?

UIImage *registerButtonNormal = [[UIImage imageNamed:@"yellowRegisterButton"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];

[self.registerButton setBackgroundImage:registerButtonNormal forState:UIControlStateNormal];


UIImage *registerButtonSelected = [[UIImage imageNamed:@"yellowRegisterButtonSelected"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];

[self.registerButton setBackgroundImage:registerButtonSelected forState:UIControlStateSelected];

【问题讨论】:

标签: ios objective-c interface-builder storyboard


【解决方案1】:

这其实很简单。

您只需创建一个@property 并通过将控件从按钮拖动到新创建的属性来连接您要设置样式的按钮。

该属性应如下所示:

@property (nonatomic, strong) IBOutlet UIButton *registerButton;

然后在 viewDidLoad 中,您将上面针对您的按钮的代码:

    - (void)viewDidLoad
    {
        [super viewDidLoad];

    // code for styling button goes here. 

    }

您可以查看问题中按钮样式的代码。

【讨论】:

  • 您不需要将按钮设为属性。只需在@interface 下创建对按钮的引用就足够了。如果您打算访问其他类中的按钮,则只需将该按钮设为您的类的属性。否则,只需将按钮的范围设置为它所在的类。
  • 不,您不需要将其设为属性。但这是一种更好的风格,也是 @Arel 推荐的合适方式。
  • @DaveBatton 我没有意识到。你能解释一下为什么吗?如果不需要从类外部访问变量,我认为最好限制变量的范围。
  • @JackHumphries 我个人感觉像 Dave Batton,但这是个人意见。我喜欢实际上从外部使用的属性(并且我认为 NIB 在外部)在外部可见(在标题内)......但是,我看到许多(GOOD!)开发人员以不同的方式做这件事,就像你。因此,这主要是个人风格的问题。
  • 并非所有属性都可以从类外部访问变量。它们可以在第二个接口子句内的实现中定义,从而有效地将它们设为私有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2011-11-22
  • 2020-02-01
  • 1970-01-01
  • 2013-12-25
相关资源
最近更新 更多