小编cza*_*ter的帖子

如何使用SwiftUI在列表中滑动以编辑动作?

我正在尝试使用SwiftUI实现滑动以编辑动作。删除动作和移动动作都可以很好地工作,但是我不知道如何启用滑动来编辑动作。

当用户将激活滑动以进行编辑操作时,我想打开编辑屏幕。

这是我的代码:

struct TableView : View {
@State var dataSource = DataSource()

var body: some View {
        NavigationView {
            List {
                ForEach(dataSource.pokemons.identified(by: \.id)) { pokemon in
                    Text(pokemon.name) 
                }
                .onDelete(perform: deletePokemon)
                .onMove(perform: movePokemon)
            }
            .navigationBarItems(leading: EditButton(), trailing: Button(action: addPokemon, label: { Text("Add") }))
            .navigationBarTitle(Text("Pokemons"))
        }
}
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swiftui

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

如何使用 dataTaskPublisher 链接多个 API 调用?

我想从 REST API 获取数据,为此,我需要首先获取一组 ID - 第一次调用。之后,我需要使用每个 ID 进行 API 调用。我不想使用completionHandlers 而是Combine。我从 dataTaskPublishers 开始,但我不确定如何将它们链接起来才能正常工作

到目前为止,这是我的代码:

   private func getIDs(for type: DataType) -> AnyPublisher<[ID], Error> {
        guard let url = URL(string: "url")
            else { fatalError("Wrong URL") }

        return session.dataTaskPublisher(for: url)
            .receive(on: RunLoop.main)
            .map { $0.data }
            .decode(type: [ID].self, decoder: decoder)
            .eraseToAnyPublisher()
    }

    private func getData(with id: ID) -> AnyPublisher<MyData, Error> {
        guard let url = URL(string: "url_with_id")
            else { fatalError("Wrong URL") }
        return session.dataTaskPublisher(for: url)
            .receive(on: RunLoop.main)
            .map { $0.data }
            .decode(type: …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui combine

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

UITableView在自定义演示动画期间“跳起来”

我正在尝试创建自定义过渡,但是“跳转” tableView有问题。如您所见,在过渡之前,tableView隐藏在navigationBar下,这是错误的。我该如何解决?动画代码:

UIView.animate(withDuration: transitionDuration, delay: 0, options: animationOptions, animations: { [weak self] in
        guard let self = self else { return }
        fromVC.view.transform = CGAffineTransform(scaleX: 0.9, y: 0.855)
        fromVC.view.layer.cornerRadius = self.cornerRadius
        fromVC.view.clipsToBounds = true
        self.containerView.frame.origin.y -= self.containerHeight
        self.topView.frame.origin.y -= self.containerHeight
        self.backdropView.alpha = self.backdropAlpha
        }, completion: { _ in
            transitionContext.completeTransition(true)
    })
Run Code Online (Sandbox Code Playgroud)

以及现在的外观: 在此处输入图片说明

ios swift

5
推荐指数
0
解决办法
79
查看次数

标签 统计

ios ×3

swift ×3

swiftui ×2

combine ×1

xcode ×1