【问题标题】:How to call a UIViewController property in custom uiview?如何在自定义 uiview 中调用 UIViewController 属性?
【发布时间】:2014-03-02 02:36:50
【问题描述】:

我的 viewController 中有一个 AVAudioPlayer 属性,如果正在播放音乐,我想在我的自定义 uiview 中画一个圆圈。

在我的 MyViewController.h 中:

@property (strong, nonatomic) AVAudioPlayer *audio;

在我看来.h

- (void) drawCircle
{

//DRAW Circle
}

现在我想检查我的 View.m 是否正在播放音频。

我尝试在我的 View.h 中添加以下内容

@property (nonatomic, assign) MyViewController *ViewController_audio;

然后在

中做if ([ViewController_audio _audio].playing) { }

但是没有用。

【问题讨论】:

    标签: ios iphone objective-c uiview uiviewcontroller


    【解决方案1】:

    您的语法错误。去掉下划线:

    if ([ViewController_audio audio].playing)
    

    if (ViewController_audio.audio.playing)
    

    两种语法都有效。

    附: “...它不起作用”绝对没有帮助。总是解释发生了什么。在您的情况下,我假设您遇到了编译器错误。所以复制并粘贴编译器错误的全文,并明确告诉它发生的行。

    【讨论】:

    • 我收到以下错误:成员引用基类型 'int *' 不是结构或联合。
    • 我也尝试在我的 uiviewcontroller 中调用 drawCircle,但没有显示。有没有办法将圆圈添加为子视图?
    【解决方案2】:

    视图不应引用视图控制器。这是一个糟糕的设计。 相反,您应该在视图中有一个标志,该标志将由您的视图控制器在播放时设置。视图将读取此属性并做出 ui 决定。

    从设计的角度来看,我建议不要留下任何决定。视图控制器有思考的权利,视图应该只显示。

    【讨论】:

    • 有道理,所以我应该在我的 uiview 中创建一个 bool 方法?
    • 你可以这样做。但是尝试寻找一种方式,让您的视图控制器在视图上显示或隐藏某些内容,而不是视图本身进行隐藏/显示
    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多