SwiftUIでURLを入力してボタンを押したらWEBページを表示する

ContentView.swift import SwiftUI struct ContentView: View { @State var workUrl: String = "" @State var fixedUrl: String = "https://www.google.com/" var body: some View { VStack(alignment: .leading) { TextField(" Enter Url (例 https://apple…

SwiftUIでWEBブラウザを作るには

WebView.swiftを新しく作る import SwiftUI import WebKit struct WebView: UIViewRepresentable { var url: URL func makeUIView(context: Context) -> WKWebView { return WKWebView(frame: .zero) } func updateUIView(_ uiView: WKWebView, context: Con…

SwiftUI プレビュー画面を作るには

(3) プレビュー画面を作るには (3.1) ContentView()の例 struct ContentView: View { // こっちは表示用 } // これでプレビューができる struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } (3.2) Landmar…

SwiftUIで画面に色々表示するには

(2) 画面に色々表示するには (2.1) ContentView()の例 struct ContentView: View { var body: some View { 「ここ」に書く } } (2.1.1) 表示の中身 struct ContentView: View { var body: some View { VStack { // 縦に並べる MapView() // 地図 CircleImage…

SwiftUIで最初に開く画面を決めるには

(1) 最初に開く画面を決める SceneDelegate.swiftの window.rootViewController = UIHostingController(rootView: 「ここ」) に書く。 // ContentView()を設定する場合 window.rootViewController = UIHostingController(rootView: ContentView()) // Landma…

ジェネリクス 型指定の引数

/* ジェネリクス 型指定の引数 */ func swapTwoInts(a: inout Int, b: inout Int) { let c = a a = b b = c } var p = 1 var q = 2 swapTwoInts(a: &p, b: &q) print("p = \(p), q = \(q)") func swapTwoValues<T>(a: inout T, b: inout T) { let c = a a = b b</t>…

asを使って型の判定

/* 型キャスト asを使って型の判定 */ // var things = Any[]() // error: value of type 'Any.Protocol' has no subscripts var things : [Any] = [] things.append(0) things.append(0.0) for thing in things { switch thing { case 0 as Int: print("zer…

イニシャライザ

/* イニシャライザ */ struct Color { // let red = 0.0, green = 0.0, blue = 0.0 // error: immutable value 'self.red' may only be initialized once let red, green, blue : Double init(red: Double, green: Double, blue: Double) { self.red = red s…

getter/setter

/* getter/setter */ class SpeedLimitedCar: Car { override var speed: Double { get { return super.speed } set { super.speed = min(newValue, 40.0) } } } var limitCar = SpeedLimitedCar() limitCar.speed = 35.0 print(limitCar.description()) lim…

オーバーライド

/* オーバーライド */ class Car: Vehicle { var speed: Double = 0.0 override init() { super.init() maxPassengers = 5 numberOfWheels = 4 } override func description() -> String { return super.description() + "; " + "traveling at \(speed) mph"…

継承

/* 継承 */ class Vehicle { var numberOfWheels: Int? var maxPassengers: Int? init() { } func description() -> String { // return "numberOfWheels = \(numberOfWheels), maxPassengers = \(maxPassengers)" // warning: string interpolation produce…

構造内部の辞書型や列挙型のアクセス方法としてサブスクリプトを定義

/* サブスクリプト 構造内部の辞書型や列挙型のアクセス方法としてサブスクリプトを定義 */ struct TimesTable { let multiplier: Int subscript(index: Int) -> Int { return multiplier * index } } let threeTimesTable = TimesTable(multiplier: 3) prin…

コレクション型 配列、辞書など

/* コレクション型 配列、辞書など */ // var shoppingList: String[] = ["Eggs", "Milk"] // error: array types are now written with the brackets around the element type var shoppingList: [String] = ["Eggs", "Milk"] var airports: Dictionary<String, String> = [</string,>…

タプル

/* タプル */ let http404Error = (404, "Not Found") print("http404Error = \(http404Error)")

アサーション

/* アサーション */ let age = -3 // assert(age >= 0, "A person's age cannot be less than zero") // (RUN TIME) Assertion failed: A person's age cannot be less than zero: ...

プロトコルと拡張

/* プロトコルと拡張 */ protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() } extension Int: ExampleProtocol { var simpleDescription: String { return "The number \(self)" } mutating func adjust() { self +…

ネストした型

/* ネストした型 */ struct BlackjackCard { // nested Suit enumeration enum NestSuit: Character { case Spades = "♠", Hearts = "♡", Diamonds = "♢", Clubs = "♣" } } let card = BlackjackCard.NestSuit.Hearts print("card = \(card)") print("card =…

列挙型と構造型

/* 列挙型と構造型 */ enum Suit { case Spades, Hearts, Diamonds, Clubs func simpleDescription() -> String { switch self { case .Spades: return "spades" case .Hearts: return "hearts" case .Diamonds: return "diamonds" case .Clubs: return "clu…

オブジェクトとクラス クラス定義してインスタンス化して利用

/* オブジェクトとクラス クラス定義してインスタンス化して利用 */ class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } } var shape = Shape() shape.numberOfSides = 7 print("s…

複数の戻り値の関数

/* 複数の戻り値の関数 */ func count(string: String) -> (vowels: Int, consonants: Int, others: Int) { var vowels = 0, consonants = 0, others = 0 for character in string { // switch String(character).lowercaseString { // error: value of type…

関数が戻り値になる関数

/* 関数が戻り値になる関数 */ // func makeIncrementer() -> (Int -> Int) { // error: single argument function types require parentheses func makeIncrementer() -> ((Int) -> Int) { func addOne(number: Int) -> Int { return 1 + number } return a…

funcで関数の定義と代入

/* funcで関数の定義と代入 */ // 関数を定義して func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } // 代入もできる。 // greet("Bob", "Tuesday") // error: missing argument labels 'name:day:' in call …

NULLも入る変数の宣言

/* NULLも入る変数の宣言 */ var flag: Bool? var num: Int? if (flag == nil) { print("flag == NULL") } // if (flag) { // error: value of optional type 'Bool?' must be unwrapped to a value of type 'Bool' if (flag ?? false) { print("flag == tru…

変数の型宣言と型推論

/* 変数の型宣言と型推論 */ var welcomeMessage: String var pi: Double = 3 var piFl: Float = 3 var piInt: Int = 3 var piAuto = 3 pi = 3.14 piFl = 3.14 // piInt = 3.14 // error: cannot assign value of type 'Double' to type 'Int' // piAuto = 3…

変数の宣言 varは変数、letは定数

/* 変数の宣言 varは変数、letは定数 */ var myVar = 42 myVar = 50 let myConst = 42 // myConst = 50 // error: cannot assign to value: 'myConst' is a 'let' constant print("Hello, world!") print("myVar = \(myVar), myConst = \(myConst)")

WindowsとMac miniの両方使うとき困ったメモ

iPhoneのプログラムを作りたくて、Mac miniを購入。今までWindowsしか使ったことがなく、つまずいたことをツラツラと Q1.漢字変換のon/offはどこ? 右上の「半角/全角漢字」キーが効かない! A1.Windowsキー+スペースで切り替える Q2.コピー&ペーストのシ…

超簡単なUnityアプリをiPhoneで動かす

【今日のお題】 空と地面だけのUnityなんにもない画面をiPhoneで表示します。 iPhoneでなにもないUnityの画面を出す 【1.前提条件】 Mac miniを使って、UnityアプリをiPhoneで動かすのですが、SSDの容量が足りず、Windowsを使って、Uniyコードからxcodeの…

プログ開設しました

今日からブログをはじめます。と言っても主に自分用のメモ。 プログラムが趣味で、開発中にわかったことを、ここに書いておいて忘れないようにするためです。たぶん同じことで困っている人がいると思うので、参考になればと公開します。 カバーする分野は、W…