xcode - swift中修改对象的引用内容

标签 xcode swift

给定一个 stackView 对象,我得到了一个 stackView.arrangedSubviews 的数组
这是一个只能获取的属性。因此我不能仅仅通过这样做来替换其中的一项

stackView.arrangedSubviews[i] = newSubView

我想到的是我想替换stackView.arrangedSubviews[i]处的引用内容与 newSubView 的内容。例如,如果这是用 C 语言编写的,我会做类似的事情

*arrangedSubViews[i] = *newSubView

我知道有一种方法可以通过删除arrangedSubViews并利用addArrangedSubView来完成我需要的操作,但它不会非常有效。

最佳答案

您无法修改不可变数组,这在很多方面都是一件好事。

您可以创建一个扩展方法来替换 View ,如下所示:

@available(iOS 9.0, *)
extension UIStackView {
    func replaceView(atIndex index: Int, withView view: UIView) {
        let viewToRemove = arrangedSubviews[index]
        removeArrangedSubview(viewToRemove)
        insertArrangedSubview(view, atIndex: index)
    }
}

然后,您可以使用以下代码,而不是使用 stackView.arrangedSubviews[i] = newSubView:

stackView.replaceView(atIndex: i, withView: newSubView)

就性能而言,这样做不会产生负面影响。

关于xcode - swift中修改对象的引用内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716345/

相关文章:

Swift:未调用自定义 UINavigationController

ios - 为什么这些受约束的布局具有不同的大小?

ios - 如果 UISearchDisplayController 被弃用,那么带有搜索显示 Controller 的搜索栏有什么用呢?

iOS 静态库 |仅链接使用过的符号

swift - 如何在 SwiftUI 中为演示文稿定位器调整内容大小

ios - swift 协议(protocol) : Adding Protocol conformance to an Instance

ios - 如何在核心数据中计算一周中每一天的总和

ios - performSegueWithIdentifier 抛出奇怪的错误

objective-c - 如何从 Xcode 项目生成 Makefile?

swift - Xcode 10 : Code Signing my App+Framework fails, 因为签署第 3 方依赖框架 (PromiseKit) 失败。适用于 Xcode 9