【问题标题】:'Shortcut' for actions on objects对象操作的“快捷方式”
【发布时间】:2014-12-11 23:18:19
【问题描述】:

所以我现在的项目中有 3 个对象:

_vLabel.hidden = YES;
_wLabel.hidden = YES;
_nextButton.hidden = YES;

如您所见,我为他们所有人做了.hidden 的事情。有没有一种方法可以创建变量或我只需要应用它而不是写整行的东西,比如:

_vLabel.hide;

提前致谢!

【问题讨论】:

  • 写一个方法来为他们三个都切换隐藏?
  • @matt 你是什么意思?
  • 你可以使用ishidden方法,所以[_vLabel isHidden];
  • @Pahnev 你的意思是像_nextButton.isHidden;?这不会改变任何东西...... Xcode 说它是一个“getter 方法”
  • @Pahnev 据我了解,你离题了:这两者是等价的,并且在不改变隐藏状态的情况下获得它的值。

标签: ios objective-c action hidden shortcut


【解决方案1】:

这样做似乎很愚蠢,因为您应该遵循任何其他 iOS 程序员期望和理解的约定,但是您可以这样做:

UIView+MyCategory.h:
@interface UIView (MyCategory)
    -(void) hide;
@end

UIView+MyCategory.m:
@implementation UIView (MyCategory)
-(void) hide {
    [self setHidden:YES];
}
@end

usage:
[myView hide];

【讨论】:

  • -hide 替换为- (void)hide
  • 嗯,这是一个有用的例子,说明现有类上的类别可以做什么。而[myView hide] 也可以写成myView.hide,我仍然在尝试决定我自己的规则,什么时候我更喜欢每个
【解决方案2】:

我觉得这个问题不清楚。在这种情况下,什么是“捷径”?你怎么能得到比这更“短”的东西:

_vLabel.hidden = YES;
_wLabel.hidden = YES;
_nextButton.hidden = YES;

对我来说,这里的“长度” - 需要缩短的东西 - 是你做了三遍而不是一次。如果这些对象是您通常一起隐藏和显示的对象,那么最好有 one 方法来隐藏和显示它们中的所有

- (void) toggle {
    _vLabel.hidden = !_vLabel.hidden;
    _wLabel.hidden = !_wLabel.hidden;
    _nextButton.hidden = !_nextButton.hidden;
}

这和代码一样多,但是一旦你编写了它,那么每次你想要全部显示或隐藏它们时,你只需说:

self.toggle;

它本身实际上是一个快捷方式:

[self toggle];

所以你在这里要做的是编写一个方法来稍微改变一下语言,如果它避免重复,这是一个完全合理的做法。

【讨论】:

  • 也很棒!但我的目标更多是写一行,把它变成一个词,然后把它应用到所有
  • 这在 Swift 中会容易得多,您可以在其中定义 hide 函数,然后说类似 [_vlabel, _wlabel_, _nextButton].map(hide) 的内容。
  • 哦,真的吗?那太棒了。我应该记住这一点...谢谢:)
【解决方案3】:

嗯,如果你唯一的问题是写 label.hidden = YES; 太长,那你为什么不直接使用代码 sn-ps 呢?这样您就可以继续使用命名约定而减少书写。

您甚至可以使用 Xcode 创建这些 sn-ps。只需选择文本并将其从边缘(这部分可能非常棘手)拖动到 sn-ps 区域。

虽然我个人会使用 TextExpanderaText 之类的东西,或者你喜欢这样做的任何其他东西。这些应用程序通常比 Xcode 更快且更易于使用。

只需在这些应用程序中为 .hidden = YES; 创建 sn-p 并将其分配给像 .hide 这样的快捷方式 所以现在每当你想隐藏一些东西时,你只需写 myLabel.hide TextExpander 就会将它展开为

myLabel.hidden = YES;

为了让事情再次可见,您可以将 .show 分配给 .hidden = NO;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2012-11-08
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多