如何更改 UIButton 标题?

Posted

技术标签:

【中文标题】如何更改 UIButton 标题?【英文标题】:How to Change UIButton title? 【发布时间】:2010-10-10 04:34:13 【问题描述】:

MyViewController 有一个 UIButton,另一个 MainViewController 使用 MyViewController。

但 MainViewController 无法更改 MyViewController 中的 UIButton 标题。

另外,在 MyViewController 中仅更改 viewDidLoad 方法中的 UIButton 标题。

怎么了?

我的视图控制器

@interface MyViewcontroller : UIViewController 
    IBOutlet UIButton *imageButton;


@property (nonatomic, retain) UIButton *imageButton;

@implementation MyViewcontroller : UIViewController 
@synthesize imageButton;
    - (void)viewDidLoad  // can change button title
        [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal]
    

    - (void)setButtonTitle  // can't change button title
        [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal];
    

主视图控制器

@implementation MainViewController : UIViewController 
@synthesize scrollView;
    - (void)viewDidLoad  // can't change button title
        MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil];
        [myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal];
        [scrollView addSubview:myView.view];
        [myView release], myView = nil;
    

【问题讨论】:

【参考方案1】:

发生这种情况是因为直到视图加载后插座才连接,并且视图直到第一次调用后才加载(它是延迟加载)。您只需确保始终首先加载视图即可轻松解决此问题。但是,您可能需要重新考虑您的设计,并使按钮标题依赖于不属于视图层次结构的其他项目。

例如,如果您重新排序呼叫,它将起作用:

MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil];
[scrollView addSubview:myView.view]; // view is loaded
[myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal]; // imageButton is now wired

【讨论】:

我在按钮上设置文本时遇到了麻烦,因为我使用的是setImage 而不是setBackgroundImage。如果您使用setImage,它将覆盖您的文本。

以上是关于如何更改 UIButton 标题?的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 创建后如何更改框架?

如何更改图像 UIButton 的大小和颜色?

如何更改视图中每个 UIButton 的框架

动画 UIButton 的标题更改

触摸按钮时如何更改 UIButton 图像

如何使用 Swift 更改 UIButton 的字体