【问题标题】:How to make reference to a UIButton in viewDidLoad?如何在 viewDidLoad 中引用 UIButton?
【发布时间】:2012-08-12 06:13:11
【问题描述】:

这是我的操作 UIButton:

-(IBAction)favoriteButtonPressed:(id)sender
{
if (favoriteButtonSelected == 0) {

    [sender setSelected:YES];

    favoriteButtonSelected = 1;
    [sender setImage:[UIImage imageNamed:@"favoritedItem.png"]];
    [selectedObject setValue:@"Yes" forKey:@"Favorite"];

} else {

    [sender setSelected:NO];

    favoriteButtonSelected = 0;
    [sender setImage:[UIImage imageNamed:@"notFavorite.png"]];
    [selectedObject setValue:@"No" forKey:@"Favorite"];
}
}

如何在 viewDidLoad 中引用按钮?使以下代码工作:

- (void)viewDidLoad
{
[super viewDidLoad];

if ([[selectedObject valueForKey:@"Favorite"] isEqual:@"Yes"])  {

    [favoriteButton setImage:[UIImage imageNamed:@"favoritedItem.png"]];
    [favoriteButton setSelected:YES];
    favoriteButtonSelected = 1;

} else {

    [favoriteButton setImage:[UIImage imageNamed:@"notFavorite.png"]];
    [favoriteButton setSelected:NO];
    favoriteButtonSelected = 0;
}
}

编辑进度:

现在我这样做了:在助手编辑器中从 UIButton Ctrl 拖动到 ViewController。连接:插座,名称:favoriteButton,类型:UIButton,存储:weak。但是错误仍然存​​在。 + viewDidUnload 中的合成错误和错误.. 建议?

视图控制器的助手编辑器标题,带有从 Ctrl 拖动添加的属性:

@interface DetailViewController : UIViewController {
IBOutlet UIScrollView *viewScroller;
}

@property (nonatomic, strong) IBOutlet UILabel *mylLabel;

@property (nonatomic, strong) NSString *selectedObj;

@property (strong, nonatomic) NSArray *detailsDataSource;
@property int detailIndex;
@property (weak, nonatomic) IBOutlet UIButton *favoriteButton; //The added property

@end

【问题讨论】:

    标签: iphone objective-c ios xcode


    【解决方案1】:

    控制从你的按钮拖到视图控制器的头部来创建一个属性。 (您可以在助手模式下执行此操作,右上角的第二个按钮)..

    然后你可以在任何地方使用该属性引用你的按钮

    【讨论】:

    • 好的,谢谢,我试过了,但没用。像这样:Ctrl-drag 从 UIButton 到助理编辑器中的 ViewController。连接:插座,名称:喜爱按钮,类型:UIButton,存储:强。但是错误仍然存​​在。 + viewDidUnload 中的合成错误和错误.. 建议?
    • 不应该有错误,如果你在标题上这样做了,xcode 会自动创建合成并在 viewdidunload 中将其归零。你确定名字是一样的吗?
    • 另一个选项是您自己在该视图控制器的标题上创建一个 IBOutlet。让它像这样 @property (weak, nonatomic) IBOutlet UIButton *favoriteButton;然后控制拖动按钮到 viewcontroller 视图下方的小框,应该会出现一个列表,你会在那里看到 favoriteButton。
    • 是的,名字是一样的。它添加了合成和零,是的。但它在 .h 中没有添加任何属性。此属性仅在助理编辑器中可见。这是正确的行为吗? (我控制按钮的拖动,并在按下助手编辑器按钮时弹出的窗口中创建属性)查看我的编辑。
    • 我刚刚注意到,您的代码本身是错误的,不能这样设置按钮。如果你想改变图像,它必须是 [[favoriteButton setImage: forState:] ];也将其更改为 Action 方法。
    【解决方案2】:

    您需要的是按钮的 IBOutlet。

    你可以ctrl+拖动XIB文件中的按钮到这个类的头部,并创建一个名为 favoriteButton 的 IBOutlet 属性。

    【讨论】:

    • 好的,谢谢,我试过了,但没用。像这样(使用情节提要):Ctrl-拖动从 UIButton 到助理编辑器中的 ViewController。连接:插座,名称:喜爱按钮,类型:UIButton,存储:强。但是错误仍然存​​在。 + viewDidUnload 中的合成错误和错误.. 建议?
    • 正如 Luis Oscar 所说,Xcode 应该添加这些。如果没有,请尝试自己合成按钮属性,并在 viewDidUnload 中将其设置为 nil。
    【解决方案3】:

    除非您使用的是最新版本的 Xcode,否则您确实需要 @synthesize 收藏按钮。

    您确实应该发布您只是让人们猜测的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多