从UIView类访问方法

时间:2013-10-12 00:32:15

标签: iphone ios objective-c uiview

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

我发布在此处:RemoveFromSuperview specific views询问如何从我的超级视图中删除所有子视图。

我通过循环获得了这个想法,效果很好。

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

[myStickerView hideTools]; 

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

我使用此代码调用hideTools方法,但无效。

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

有什么问题?请帮帮我。我想为hideTools的所有myStickerView致电self.view.subviews

感谢。

3 个答案:

答案 0 :(得分:2)

我假设您的hideTools方法仅适用于您的myStickerView课程。

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

子视图中的view声明为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];
        }