//tips
//新規iosアプリの作成
Swiftを利用して新規iosアプリを作成していく。
iPhoneのリマインダーをよく使用するのだが、
・他のデバイスにも同期されてしまうこと
・消去しないと見づらいが、消去すると記録から消えてしまうこと
がわたしの中で使いにくいポイントとなっている。
なので、アプリでデバイスごとに独立してタスクを管理でき、gmailなどと連携させて、後で、どの時点でどのタスクを追加していたのかを見返せるようにし、消去のハードルを下げるようにできないか考える。gmailからタイトル部分を読み出し、excel化できれば自分の軌跡を管理しやすく、手帳の代用としても使えそう。
数年単位での管理も可能とする場合、スケジュール帳などに連携されないシンプルなものの方が個人的には使いやすく思う。
また、chatアプリは下記のものを参考に作成していく。
https://qiita.com/tetsukick/items/dade0314abc2b8db0953
//gamil送付リマインダーアプリ作成
リマインダーアプリにmail送信機能を付与できないか考える。
下記を参照すると、
・MailCore2というライブラリを導入
・ライブラリ導入のためにBridging-Header.hが必要となる
ことがわかる。
以前作成したListAppをベースにして作成する。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List(0 ..< 5) { item in
NavigationLink(destination: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Destination@*/Text("Destination")/*@END_MENU_TOKEN@*/) { /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Content@*/Text("Navigate")/*@END_MENU_TOKEN@*/ }
}.navigationTitle(/*@START_MENU_TOKEN@*/"Title"/*@END_MENU_TOKEN@*/)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
まずはアプリの構成から修正する。
・LIstの項目数の増加
・クリックして別ページではなく、そのままテキスト入力
・右下にボタン配置create new task
・テキストを左スライドさせたら、削除、送付、送付済みのボタン表示
//クリックしてそのままテキスト表示
まず余分なナビゲーションを削除し、テキストとタイトルのみ表示するようにスクリプトを修正する。
struct ContentView: View {
var body: some View {
NavigationView{
List{
Text("")
// 二行目
Text("")
// 三行目
Text("Textのみ")
}.navigationBarTitle("Menu")
}
}
}
https://note.com/kaigian/n/ne02ea8019329
https://note.com/dngri/n/nb243dbd5114a
//テキストを追加するボタンの作成
右下にクリックするとテキスト項目を一行追加するボタンを作成する。
Buttonとspacerで右下にボタンを配置、ボタンのテキストをimageに入れ替え、imageの編集を行った。
HStack {
Spacer()
Button(action: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Action@*/{}/*@END_MENU_TOKEN@*/) {
Image(systemName:"pencil.tip.crop.circle.badge.plus")
.resizable()
.foregroundColor(/*@START_MENU_TOKEN@*/.black/*@END_MENU_TOKEN@*/)
.padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/)
.scaledToFit()
.frame(width: 80, height: 80)
}
}
https://capibara1969.com/1861/
//スワイプによる行削除ボタンの実装
下記を参考にスワイプによる行削除ボタンの実装を行ってみた。
https://capibara1969.com/1443/
行追加の方も確認する。随時追加という機能ではなく一度に追加という機能までは実装できた。
https://teratail.com/questions/238995
import SwiftUI
struct ContentView: View {
@State var tasks = [String]()
var body: some View {
VStack {
NavigationView{
List{
ForEach(0..<tasks.count, id: \.self) { task in
Text(self.tasks[task])}
.onDelete(perform: rowRemove)
}
.navigationBarTitle("Menu")
}
HStack {
Spacer()
Button(action: {self.tasks = createTasks()
}) {
Image(systemName:"pencil.tip.crop.circle.badge.plus")
.resizable()
.foregroundColor(/*@START_MENU_TOKEN@*/.black/*@END_MENU_TOKEN@*/)
.padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/)
.scaledToFit()
.frame(width: 80, height: 80)
}
}
}
}
func rowRemove(offsets: IndexSet) {
tasks.remove(atOffsets: offsets)
}
func createTasks()->[String] {
return ["item1", "item2", "item3", "item4", "item5","item6"]
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}