【问题标题】:Objective-C: setValue: value forKey: xpositionObjective-C: setValue: value forKey: xposition
【发布时间】:2015-08-07 15:20:15
【问题描述】:

我正在尝试为 NSMutableArray 中的某些对象创建“动画”效果。我设置了它,所以每 2 秒,对象就会改变它们的 x 值(我不想做一个实际的动画,所以请不要建议一个!):

- (void)jumpLeft {
    [self performSelector:@selector(jumpRight) withObject:nil afterDelay: 2.0];

    for (int i = 0; i < [self.jumpArray count]; i++) {
        [self.jumpArray[i] setValue:@(30*i) forKey: "XPOSITION"];
    }
}

- (void)jumpRight {
    [self performSelector:@selector(jumpLeft) withObject:nil afterDelay: 2.0];

    for (int i = 0; i < [self.jumpArray count]; i++) {
        [self.jumpArray[i] setValue:@(20*i) forKey: "XPOSITION"];
    }
}

假设它在整个游戏中持续。我的问题是,我输入什么来改变 x 位置?我试着看看人们所说的,我没有找到任何东西。我也尝试过 self.jumpArray[i].center = ... 但它说“在 'id' 类型的对象上找不到属性。有什么建议吗?

任何帮助!提前谢谢!

【问题讨论】:

  • 附注我知道输入的值不会使其“向左跳”或“向右跳”,它们或多或少是示例的占位符。
  • jumpArray 中的对象是什么?他们是某种UIViews 吗?
  • 它们是 UILabel -- 抱歉没有澄清
  • 您不能对id 类型的对象使用属性访问。相反,调用 setter 方法。 [self.jumpArray[i] setCenter:someValue];.
  • 感谢 rmaddy 完美运行!你想把它写成答案,以便我标记它是正确的吗?

标签: ios objective-c setvalue


【解决方案1】:

假设self.jumpArrayUIView对象的数组,你可以使用setter方法设置中心,而不是使用属性语法:

[self.jumpArray[i] setCenter:somePointValue];

另一种选择是让您的代码更具可读性:

UIView *view = self.jumpArray[i];
view.center = somePointValue;

你也可以使用快速枚举:

for (UIView *view in self.jumpArray) {
    view.center = somePointValue;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多