如何在另一个类中使用此扩展委托更新我的 ViewController UI

凯汉姆 K.

我正在使用一个叫做AudioManager你可以在这里找到它作为这个问题的答案的类

它具有委托方法AVAudioPlayerDelegate作为AudioManager的扩展

有没有办法在我的视图控制器中使用这个或覆盖这些委托方法,以便能够更改我的 UI 中的属性。这是扩展名:

extension AudioManager: AVAudioPlayerDelegate {

   func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, 
 successfully flag: Bool) {

       player.stop()

       print("Finish Playing")

   }

   func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, 
error: Error?) {

        print(/error?.localizedDescription)

    }

}

这是我的视图控制器播放按钮代码:

@IBAction func playButtonTapped(_ sender: UIButton) {
    if AudioManager.shared.player == nil {
        if recordFilePath != nil {
            AudioManager.shared.setupPlayer(URL(string:recordFilePath)!)
        }
    }

    if playButtonIsChecked {
        playButtonIsChecked = false
        AudioManager.shared.player?.play()
        playRecordButton.setBackgroundImage(#imageLiteral(resourceName: "pauseProfileButton"), for: .normal)
    } else {
        playRecordButton.setBackgroundImage(#imageLiteral(resourceName: "editProfilePlay"), for: .normal)
        playButtonIsChecked = true
        AudioManager.shared.player?.stop()

    }

上面的代码很好,当我调用player?.stop()AVAudioPlayerDelegate方法时,正在从AudioManager类中调用方法,但是当音频文件结束并停止时,我没有调用player?.stop按钮背景图像当然不会改变。

我如何在我的视图控制器中使用这个委托方法并知道我的音频文件何时结束并停止。

弗朗切斯科·德利罗

在您的 AudioManager 类中,您可以实现一个回调(闭包),如:

var isAudioStopped: ((Bool) -> Void)?

你可以在你的扩展中的委托方法中调用它:

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, 

成功标志:布尔){

   player.stop()
   isAudioStopped?(true)

   print("Finish Playing")

}

然后在您的 ViewController 方法中:

AudioManager.shared.isAudioStopped = {
    [weak self] completion in 
    // if completion the audio is stopped 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何告诉ViewController从另一个类更新其UI

来自分类Dev

从非UI类显示ViewController

来自分类Dev

Objective-C:如何访问另一个 ViewController 并更改其中的 UI?

来自分类Dev

从oneViewController移至另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

来自分类Dev

从oneViewController移到另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

来自分类Dev

使用Swift将UI图像缝到ViewController

来自分类Dev

从另一个类更新ViewController UILabel

来自分类Dev

如何在Swift 3.0中使用按钮将值从ViewController传递到另一个ViewController

来自分类Dev

使用segues从另一个ViewController更新tableView

来自分类Dev

如何在另一个ViewController中关闭一个ViewController?

来自分类Dev

从ViewController中的文本字段获取输入并在另一个类中使用

来自分类Dev

从ViewController中的文本字段获取输入并在另一个类中使用

来自分类Dev

由于 UI 编码,我的 ViewController 变得非常大

来自分类Dev

如何在另一个中使用语义 ui 添加 div?

来自分类Dev

当我使用委托将值传递给另一个ViewController时,我发现委托没有任何作用

来自分类Dev

从另一个类更新UI

来自分类Dev

从另一个GPIOListener类更新UI

来自分类Dev

从另一个类更新 UI 控件

来自分类Dev

在另一个viewController中调用类方法

来自分类Dev

我如何在一个不知道新VC的VC上呈现另一个ViewController?

来自分类Dev

从另一个ViewController在Swift中更新UITableView

来自分类Dev

从另一个ViewController更新UILabel

来自分类Dev

从另一个ViewController在Swift中更新UITableView

来自分类Dev

android:从另一个类中的另一个线程更新UI

来自分类Dev

如何从一个ViewController切换到另一个ViewController

来自分类Dev

如何在使用第三方ViewController / class的同时将整个Swift类实例传递给另一个类?

来自分类Dev

如何从另一个更改viewController的颜色(或主题)?

来自分类Dev

如何从另一个ViewController调用函数

来自分类Dev

如何从代码中调用另一个ViewController?

Related 相关文章

  1. 1

    如何告诉ViewController从另一个类更新其UI

  2. 2

    从非UI类显示ViewController

  3. 3

    Objective-C:如何访问另一个 ViewController 并更改其中的 UI?

  4. 4

    从oneViewController移至另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

  5. 5

    从oneViewController移到另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

  6. 6

    使用Swift将UI图像缝到ViewController

  7. 7

    从另一个类更新ViewController UILabel

  8. 8

    如何在Swift 3.0中使用按钮将值从ViewController传递到另一个ViewController

  9. 9

    使用segues从另一个ViewController更新tableView

  10. 10

    如何在另一个ViewController中关闭一个ViewController?

  11. 11

    从ViewController中的文本字段获取输入并在另一个类中使用

  12. 12

    从ViewController中的文本字段获取输入并在另一个类中使用

  13. 13

    由于 UI 编码,我的 ViewController 变得非常大

  14. 14

    如何在另一个中使用语义 ui 添加 div?

  15. 15

    当我使用委托将值传递给另一个ViewController时,我发现委托没有任何作用

  16. 16

    从另一个类更新UI

  17. 17

    从另一个GPIOListener类更新UI

  18. 18

    从另一个类更新 UI 控件

  19. 19

    在另一个viewController中调用类方法

  20. 20

    我如何在一个不知道新VC的VC上呈现另一个ViewController?

  21. 21

    从另一个ViewController在Swift中更新UITableView

  22. 22

    从另一个ViewController更新UILabel

  23. 23

    从另一个ViewController在Swift中更新UITableView

  24. 24

    android:从另一个类中的另一个线程更新UI

  25. 25

    如何从一个ViewController切换到另一个ViewController

  26. 26

    如何在使用第三方ViewController / class的同时将整个Swift类实例传递给另一个类?

  27. 27

    如何从另一个更改viewController的颜色(或主题)?

  28. 28

    如何从另一个ViewController调用函数

  29. 29

    如何从代码中调用另一个ViewController?

热门标签

归档