【问题标题】:SetHidden not working设置隐藏不起作用
【发布时间】:2014-03-14 22:18:04
【问题描述】:

当我按下按钮时,我试图显示标签几秒钟。但是隐藏功能无法正常工作。

-(void) hide_label:(NSString *)value{
    [value setHidden:YES];

}

得到错误:“NSString”没有可见的@interface 声明选择器“setHidden:”。

【问题讨论】:

  • 您的错误消息是准确的,您尝试在 NSString 而不是 UILabel 上设置隐藏,您需要对 UILabel 的引用。
  • 你真的应该练习更准确地说出事情。没有“隐藏功能”。有一个名为“hide_label:”的实例方法,还有一个名为“hidden”的属性。通过不准确地说出你的意思,你让我们猜测。更糟糕的是,某些东西“无法正常工作”是不正确的。它不编译。完全不同。通过说“它不起作用”,您将每个人都引向了完全错误的道路。

标签: ios objective-c function


【解决方案1】:

在您的示例中,valueNSString,而不是 UILabel。正如错误消息所示,NSString 没有 setHidden: 方法。

相反,您需要传入标签本身,然后调用setHidden:

所以,把方法改成:

- (void) hide_label:(UILabel *)label {
  [label setHidden:YES];
}

并更改调用此方法的代码的所有部分以传入UILabel。

【讨论】:

  • 非常感谢!但是当我现在调用这个函数时。我做 [self hide_label:red_label];然后我收到一条错误消息:不兼容的指针元组将 UILabel* 发送到元组 NSString 的参数?
  • 这意味着您没有像我展示的那样更改方法声明来请求 UILabel。确保您的方法声明与我上面的完全一样(还要确保 - (void) hide_label:(UILabel *)label 部分在您的头文件中。
【解决方案2】:

NSString不是UILabel 的子类并且不响应setHidden:,您必须在UILabel 属性本身上调用它。


您如何声明您的UILabel?如果您通过笔尖连接,它应该类似于以下内容:

@property (nonatomic, weak) IBOutlet UILabel *label;

或者如果它以编程方式创建:

@property (nonatomic, strong) UILabel *label;

然后您可以在标签上调用 setHidden,因为它是一个可以使用点语法的属性:

label.hidden = YES;

你可以使用它的访问器来检查它的状态:

if ([label isHidden]) {
  //... do something 
}

可能值得你阅读一些关于 iOS 开发的教程,Look Here on raywenderlich.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多