xcode
iOS, iPhone, swift, xcode
Swift| AdMob組み込み時のエラー「Type “ViewController” does not confirm to protocol ‘GADBannerViewDelegate’」の対処方法
by opendata •
こんにちは。
Type “ViewController” does not confirm to protocol ‘GADBannerViewDelegate’
import UIKit import GoogleMobileAds class ViewController: UIViewController { <中略> override func viewDidLoad() { <中略> //AdMob var bannerView: GADBannerView = GADBannerView(); bannerView = GADBannerView(adSize:kGADAdSizeBanner); bannerView.adUnitID = "ca-app-pub-****************/**********"; //広告ユニットID bannerView.delegate = self; //delegatを指定 ※ここでビルドエラー発生 bannerView.rootViewController = self; self.view.addSubview(bannerView); bannerView.loadRequest(GADRequest()); } }
この問題は、ViewControllerクラスにプロトコルを指定するのを忘れているため発生します。
プロトコル、”GADBannerViewDelegate”を追加してやります。
class ViewController: UIViewController ,GADBannerViewDelegate { //※プロトコルを指定すればOK <中略> override func viewDidLoad() { <中略> //AdMob var bannerView: GADBannerView = GADBannerView(); bannerView = GADBannerView(adSize:kGADAdSizeBanner); bannerView.adUnitID = "ca-app-pub-****************/**********"; //広告ユニットID bannerView.delegate = self; //delegatを指定 ※ビルドエラーが解消! bannerView.rootViewController = self; self.view.addSubview(bannerView); bannerView.loadRequest(GADRequest()); } }
これでビルドエラーが解決しましたか?
iOS, iPhone, swift, xcode
Xcode|Swift|@IBOutletのビックリマーク(!)の意味は!?
by opendata •
こんにちは。
ストーリーボードで、コントロールと紐付けをしてあげると以下のようなコードが自動的に挿入されます。
変数の最後(行末)に感嘆符(!)が付いていますが、これはいったい何者でしょうか?
@IBOutlet var yourAge:UITextField!
これは、yourAgeがOptional型だということを意味しています。
つまり、yourAgeは、『空(nil)を許容しますよ』ということです。
もう少し詳しく知りたい方は、Optional型、アンラップ(unwrap)などのキーワードで検索してみてくださいね。
iOS, iPhone, swift, xcode
Xcode:didReceiveMemoryWarning() メソッドとは?
by opendata •
didReceiveMemoryWarning() メソッドは、警告を受け取ったときに呼ばれるメソッドです。
画像ファイルなど、使用している大きなメモリ領域を解放します。
メモリ警告を無視するとアプリが異常終了する場合があります。
iOSシミュレーターにも、メモリ警告のシミュレート機能が備わっているので、テスト時に確認しておくと安心ですね。
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
didReceiveMemoryWarning() メソッドについては、以下の本に詳しく書かれています。
より詳しく勉強してみたい方は読んでみてはいかがでしょうか。
iOS, iPhone, swift, xcode
Xcode:nibファイルって何よ?
by opendata •
nibファイルは『ニブファイル』と読みます。
iOSアプリの開発がはじめての方が、理解しにくいnibファイルについて解説します。
概要
nibファイルとは、簡単にいってしまうとボタンなどのUI要素の描画情報が記述されたファイルのことです。
iOSアプリの開発作業は、「プログラムコードの記述」と「UIの作成」の二つに大別できます。通常は「UIの作成」はInterface Builder(IB)※を使用してUIを作成する作業を行います。このIBで作成されたUI要素の描画情報がnibファイルに格納されます。
※以前はXcodeとは独立したアプリでしたが、現在ではXCodeに統合されています
名前の由来
拡張子は.nibです。この拡張子が呼び名の由来です。
nibはNeXTStep Interface Builderの頭文字からとったものです。
ストーリーボードファイルとの関係
UI要素の描画情報はストーリーボードファイル(Storybordファイル)に格納されているのでは?と思うかもしれません。実は、ストーリーボードファイル(Storybordファイル)の正体は、複数のnibファイルを一つにまとめたものです。
ViewControllerとの関係
アプリ(ViewController)が起動されるときに、nibファイルからUI要素の描画情報が読み込まれ、インスタンス化され、起動直後の画面が描画されます。
ViewController.swiftのviewDidLoad()メソッドには、
Do any additional setup after loading the view, typically from a nib.
とコメントが記載されています。
「ボタンなどのUI要素がnibファイルからロードされ、インスタンス化されたらあとは
あなたが設定等を自由に記述してくださいね」、
ということです。
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
viewDidLoad()の中でプログラムを記述することによって、UI要素の色を変えたり、ボタンを追加したりすることができるわけですね。
nibファイルについては、以下の本に詳しく書かれています。
より詳しく勉強してみたい方は読んでみてはいかがでしょうか。
iOS, iPhone, xcode
XCODE:ユーティリティエリアとは?
by opendata •
xcodeの右側の部分です。
上の画像の右側の赤い線で囲んだ部分です。
ユーティリティエリアは特に臥煙を設計する場合に各種コントロールを表示したり、各コントロールのパラメータが変更できるように設計されています。
ツールバーを選択することにより、各エリアを表示させたり非表示にしたりして、画面の小さなMacでも快適にプログラムを作成できるように配慮されています。