我创建了一个简单的垂直列表,其中包含要显示的项目。
问题是当我通过 . 在列表顶部插入项目时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) 我对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]在这个闭包内使用吗?
我生成了私钥/公钥对并将其存储在 Secure Enclave 内。
它是 256 位椭圆曲线密钥。(唯一可以存储在 Secure Enclave 中的密钥类型)。
我使用SecKeyCreateWithData和SecKeyCopyExternalRepresentation在 iOS 设备之间导入/导出公钥,并且它有效。
但是,导出的密钥似乎不适用于 OpenSSL。因为它总是显示'unable to load Key'在这个命令上。
openssl ec -pubin -in public_key_file -text
Run Code Online (Sandbox Code Playgroud)
导出密钥的方式是什么?所以我可以将它与 OpenSSL 一起使用。
我想检查一个对象是否属于某种类型。为此,我可以使用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 允许我这样做吗?
谢谢你。
向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"可以从某些元素触发事件,例如按钮?
这有什么文件吗?