SwiftUI中带索引拼接数组字符串实现待办清单分享功能
问题分析
你当前的代码在ForEach里为每个任务单独创建了ShareLink,每次点击分享按钮只能获取到当前循环的单个任务,自然无法输出完整的待办列表。
解决方案
先将所有任务拼接成你期望格式的字符串,再用单个ShareLink分享这个完整的字符串即可:
// 拼接符合要求的待办列表字符串 let sharedTasks = tasks.enumerated() .map { index, task in "\(index + 1). \(task)" } .joined(separator: " ") // 创建单个分享按钮 ShareLink(item: "https://www.example.com/", subject: Text("My taskfairy list!"), message: Text(sharedTasks)) { Image(systemName: "square.and.arrow.up") }
代码说明
enumerated()获取每个任务的索引和内容,索引加1是为了从1开始计数,匹配你想要的格式map将每个任务转换为"序号. 任务内容"的格式joined(separator: " ")把所有转换后的字符串用空格连接,生成1. Eat 2. Sleep ...的完整格式- 移除原来的
ForEach循环,只用一个ShareLink即可实现完整列表的分享
内容的提问来源于stack exchange,提问作者BurnDownTheWorld
相关产品推荐
相关产品推荐

