小编nRe*_*wik的帖子

在列表顶部插入项目时如何保持 LazyVStack / VStack 中的滚动位置

我创建了一个简单的垂直列表,其中包含要显示的项目。

问题是当我通过 . 在列表顶部插入项目时insertAtTop()。滚动视图不会停留在同一个位置。

观看视频: https: //streamable.com/i7ywab


如何使滚动视图保持在同一位置?

这是示例代码。

struct TestView: View {
    
    @State private var items: [Item] = []
    
    var body: some View {
        NavigationView {
            ScrollView {
                LazyVStack {
                    ForEach(items, id: \._id) { item in
                        Text(item.text)
                            .background(Color.green)
                            .padding(.bottom, 10)
                    }
                }
            }
            .navigationBarItems(trailing: HStack {
                Button("[Insert at top]", action: {
                    insertAtTop()
                })
                Spacer(minLength: 20)
                Button("[Load]", action: {
                    load()
                })
            })
            .navigationTitle("Item List")
        }
    }
    
    private func load() {
        items = (1...50).map { _ in Item() } …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

7
推荐指数
1
解决办法
1944
查看次数

我应该在计算属性的闭包中使用弱自我吗?

我对self在闭包内使用感到困惑。

我们应该什么时候申报[weak self]?我理解的一个明显案例是

class Foo{

    var closure: ( Void -> Void )?
    var x = 0

    func doSomething(){
        closure = { [weak self] in
            if let x = self?.x{
                println(x)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想创建一个计算属性bar,它有一个闭包,并在内部捕获 self 。像这样,

extension Foo{

    var bar: Bar{
        let bar = Bar()
        bar.completionHandler = {
            println(self.x)
        }
        return bar
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该[weak self]在这个闭包内使用吗?

closures retain-cycle swift

5
推荐指数
1
解决办法
1262
查看次数

从 iOS 导出椭圆曲线密钥以与 OpenSSL 配合使用

我生成了私钥/公钥对并将其存储在 Secure Enclave 内。

它是 256 位椭圆曲线密钥。(唯一可以存储在 Secure Enclave 中的密钥类型)。

我使用SecKeyCreateWithDataSecKeyCopyExternalRepresentation在 iOS 设备之间导入/导出公钥,并且它有效。

但是,导出的密钥似乎不适用于 OpenSSL。因为它总是显示'unable to load Key'在这个命令上。

openssl ec -pubin -in public_key_file -text
Run Code Online (Sandbox Code Playgroud)

导出密钥的方式是什么?所以我可以将它与 OpenSSL 一起使用。

security ios swift

3
推荐指数
1
解决办法
2463
查看次数

如何将类存储在数组中

我想检查一个对象是否属于某种类型。为此,我可以使用is.

if cell is UITableViewCell{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用各种类型。所以,我想创建一个数组来存储类的类型。

let types = [ ATableViewCell, BTableViewCell, CTableViewCell]
Run Code Online (Sandbox Code Playgroud)

然后迭代数组并检查

for type in types{
    if cell is type{
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是如何将类型的类型存储到数组中。Swift 2 允许我这样做吗?

谢谢你。

swift

1
推荐指数
1
解决办法
685
查看次数

如何找到可以从tvml DOM触发的事件?

使用TVML教程开始tvOS开发.

向DOM添加事件时我很困惑.在这段代码中

App.onLaunch = function(options) {
  //...
  //inside resourceLoader.loadResource...
  var doc = Presenter.makeDocument(resource);
  doc.addEventListener("select", Presenter.load.bind(Presenter)); //add this line
  Presenter.pushDocument(doc);
  //...
}
Run Code Online (Sandbox Code Playgroud)

哪里"select"来的?

我怎么知道"select"可以从某些元素触发事件,例如按钮?

这有什么文件吗?

tvos tvml tvjs

1
推荐指数
1
解决办法
849
查看次数

标签 统计

swift ×4

ios ×2

closures ×1

retain-cycle ×1

security ×1

swiftui ×1

tvjs ×1

tvml ×1

tvos ×1