前回は導入で終わってしまったので今回は実際にどのようにアプリを作ったのか紹介していきます。
確認ですが、ここではSwiftを使います。
初歩的なことですが、iPhoneアプリ制作について気になることがあって調べ物をするときは、まずそのサイトがObjective-Cについて書かれたものなのかSwiftについて書かれたものなのか見極めましょう。
まず始めに作ったのはウェブブラウザでした。
機能はこんな感じです。
-検索窓にURLを入力できる。
-検索ボタンをクリックするとそのURLに飛ぶ。
-戻るボタン、進むボタンをクリックすると画面が適切に変わる。
-TOPボタンを押すと、始めのページに戻る。
それではXcodeを開いてプロジェクトを立ち上げます。
Xcodeにはストーリーボードという便利な機能があります。
iPhoneアプリでは画面の設定はViewController、その画面の機能はViewController.swiftで記述します。これ自体はandroidのxmlファイルとjavaファイルの対応関係と変わりません。
ストーリーボードはViewControllerの見た目とViewController同士の連携を管理するものです。またその操作方法は非常に簡単になっています。ドラッグやクリックなどマウスで操作することができるので、とても感覚的です。この点はandroid studioと違います。
まずはViewControllerにどんどんパーツをドラッグアンドドロップで設置していきます。
検索窓、検索ボタン、ツールバー、Web Viewを設置します。
さらにツールバーの中に進む・戻るボタン、ホームボタンを設置します。
なんとこれだけでそれらしい画面ができてしまいました。といってもまだ機能は実装していないのでクリックしても何も起こりません。パーツに機能を持たせるには、ViewController.swiftで記述を行う必要があります。
パーツをCtrlボタンを押しながらドラッグすると、もしくは右クリックでドラッグすると線が出てきます。これをViewController.swiftに落としましょう。するとSwiftファイル上にパーツの情報が現れます。このようにして画面と機能を紐付けます。
実際に書いたのはこのような内容です。
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var webview: UIWebView!
@IBOutlet weak var urltext: UITextField!
@IBOutlet weak var backbtn: UIBarButtonItem!
@IBOutlet weak var topbtn: UIBarButtonItem!
@IBOutlet weak var forwardbtn: UIBarButtonItem!
// url変数にURLを代入
var url:String = "http://yahoo.co.jp"
// loadURL関数を定義
func loadURL() {
if url.hasPrefix("http://") {
}
else {
url = "http://" + url
}
let requestURL = NSURL(string: url)
let request = NSURLRequest(URL: requestURL!)
webview.loadRequest(request)
}
@IBAction func button(sender: AnyObject) {
// Text Fieldに入力されたURLを取得
url = urltext.text!
// loadURL関数を実行
loadURL()
// キーボードを閉じる
urltext.resignFirstResponder()
}
@IBAction func back(sender: AnyObject) {
if self.webview.canGoBack {
self.webview.goBack() // 戻る
}
}
@IBAction func top(sender: AnyObject) {
url = "http://yahoo.co.jp"
// loadURL関数を実行
loadURL()
}
@IBAction func forward(sender: AnyObject) {
if self.webview.canGoForward {
self.webview.goForward() // 進む
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// viewのローディング終了後にlaodURL関数を実行
loadURL()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
こんな感じで、最低限ウェブブラウザと呼べる程度の機能を持たせることができました。
機能としては調べればたくさんの人が紹介していますのでそれほど難しくはないかと思います。
一点、詰まった点があるので最後にそれを紹介します。
WebViewなのですが、Xcode 7以降はセキュリティの問題でhttpsで始まるURLしか表示できません。
しかし、ご存じのとおり、現在はまだすべてのウェブページがhttpsで始まっているわけではありません。
そこで、info.plistというファイルを編集する必要があります。プロジェクトファイル(ストーリーボードなどと同じ場所)にあるこのファイルを右クリックして、「Opne AS」の中の「Source Code」を選択して、編集画面を開きます。
以下のように、追記をすることでhttpではじまるURLにアクセスすることができるようになります。
info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>
以上で、ウェブブラウザが完成しました。
私は以下のサイトを参考に作りました。詳しく調べたい方はぜひご覧になってください。
http://techacademy.jp/magazine/2804