Swift:如果这是在VC中制作嵌套UIView的好方法,则需要指导

问题描述 投票:0回答:1

Refernce

嗨,我现在正在制作带有某些基本按钮的相机应用,例如打开闪光灯,启用网格等。>

cameraViewController管理视图。它具有用于预览要捕获的内容的UIView,底部具有用于按钮和快门按钮的UIView。

现在,这就是我的处理方式。CameraEditorUIView内的ShutterButtonUIView和CameraViewController内的CameraEditorUIView。

而且我的编辑器按钮(闪光灯,网格,过滤器等)属于他们自己的类。然后将其插入到我的视图中。这样,我促进了关注分离,并且我的课堂不会被所有的按钮所困扰。

let editorButtons = ActionButtonFactory.shared.editorButtons
for button in editorButtons {
   // Insert to CameraEditorUIView
}

以及我的编辑器按钮类之一的示例

class FilterAction: UIButton {

    private let filter = ["paintbrush.fill"]

    override init(frame: CGRect) {
        super.init(frame: frame)

        self.setImage(getIcon(), for: .normal)
        self.addTarget(self, action: #selector(filterTapped), for: .touchUpInside)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    @objc private func filterTapped() {
        TapticHelper.shared.lightTaptic()
        NotificationCenter.default.post(name: .presentFilterListVC, object: nil) //Not sure if this is a good approach 
    }

    private func getIcon() -> UIImage {
        return IconHelper.shared.getIconImage(iconName: filter[0])
    }

}

这使我的代码行非常整齐,很小,很好。但这是一个好方法吗?我无法执行任何视图控制器功能,例如呈现任何警报,实例化另一个VC,以及从UIView中进行这种操作。

所以说在按下快门按钮后,我想转到imageDetailVC,我的方法是使用NotificationCenter观察者模式。

我不确定这是否是一种好方法。还是应该将所有内容都放在CameraViewController下?

此外,我对此方法有疑问的另一个原因是,例如,当我需要禁用第三个网格的规则时,我需要将其设置为静态,以便其他UIView可以访问它。

即:另一个类的按钮

[嗨,我现在正在制作带有某些基本按钮的相机应用,例如打开闪光灯,启用网格等。cameraViewController管理视图。并且它具有UIView来预览要显示的内容...

swift uiview uiviewcontroller uikit
1个回答
0
投票

我不确定这是否是最好的方法,但是我发现不是使用UIView,而是使用UIViewController。并将它们添加为子VC。这样,我仍然可以访问父级,而不必与通知耦合在一起,并且使其更难。

© www.soinside.com 2019 - 2024. All rights reserved.