0

我有 .m 和 .h 文件,它们可以帮助我控制 UIView(调整大小、移动等)。

我在这里发布:RemoveFromSuperview 特定视图询问如何从我的超级视图中删除所有子视图。

我得到了循环的想法,并且效果很好。

现在我想从我的 UIView 访问一个方法。

[myStickerView hideTools]; 

该方法从 myStickerView 中隐藏了一些按钮。

我使用此代码来调用hideTools方法,但不起作用。

for (UIView *view in self.view.subviews) {
    if ([view isKindOfClass:[myStickerView class]) {
        [myStickerView hideTools];
    }
}

有什么问题?请帮帮我。hideTools我想myStickerViewself.view.subviews.

谢谢。

4

3 回答 3

2

我假设您的hideTools方法仅适用于您的myStickerView班级。

在这种情况下,您需要从该类调用 hideTools:

for (UIView *view in self.view.subviews) {
    if ([view isKindOfClass:[myStickerView class]) {
        [(myStickerView *)view hideTools];
    }
}

编辑:我与其他人同时回答 :( 但如果您不将视图投射到myStickerView,您会收到警告。

于 2013-10-12T00:37:46.800 回答
0
for (UIView *view in self.view.subviews) {
if ([view isKindOfClass:[myStickerView class]) {
    [view hideTools];
}
于 2013-10-12T00:37:55.927 回答
0

首先,你的 for 循环中没有这样的对象调用myStickerView

并且viewin 子视图被声明为UIView类。

这是我的建议

for (myStickerView *stickerView in self.view.subviews) {
    if ([stickerView isKindOfClass:[myStickerView class]) {
      [stickerView hideTools];
    }

或强制目标子视图向您的班级声明

for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[myStickerView class]) {
          [(myStickerView *)view hideTools];
        }
于 2013-10-12T00:41:22.760 回答