我想知道是否有一种方法可以在事件 forEach 函数完成时执行给定代码(如 OnAppear 或苹果提供的类似方法),如果没有方法可用,我如何在 ForEach 完成时执行代码。
我有以下代码:
ScrollView {
ScrollViewReader { value in
VStack {
let tweets = getFilteredTweets()
ForEach((0..<tweets.count), id: \.self) { index in
NavigationLink(destination: TweetWebView(
tweetId: tweets[index].id,
accountId: self.viewModel.viewState.selectedAccounts.first(where: {
$0.screenName == tweets[index].screenName
})?.screenName?.lowercased()
)) {
VStack {
TweetView(
style: .withNoImage,
withHeight: true,
account: self.viewModel.viewState.selectedAccounts.first(where: {
$0.screenName == tweets[index].screenName
}),
tweet: tweets[index]
)
.frame(maxHeight: .infinity)
.onTapGesture {
viewModel.triggerEvent(.setTweetSelectedIndex(index: index))
}
}
}
.buttonStyle(PlainButtonStyle())
}
.onAppear {
value.scrollTo(viewModel.viewState.tweetSelectedIndex ?? 0)
}
}
}
}
我想在 ForEach 完成事件中执行的代码:
value.scrollTo(viewModel.viewState.tweetSelectedIndex ?? 0)