スマホHack!

Tag Archive for xcode

iPhoneアプリ開発の初心者が知っておきたいnibファイルの基本

Xcode

nibは『ニブ』と読みます。
swiftで開発を初めて一番最初に見るソースコードがViewController.swiftだと思います。
そのソースのコメントに出てくるのがnib

Do any additional setup after loading the view, typically from a nib.

iPhoneアプリ開発の初心者にとってはさっぱりわからないので、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.swiftviewDidLoad()メソッドには、

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要素の色を変えたり、ボタンを追加したりすることができるわけですね。

facebooktwittergoogle_plusredditpinterestlinkedinmail

Swift|AdMob組み込み「Use of undeclared type ‘GADBannerView’」が発生した場合の解決方法

こんにちは。

swiftでAdMobの組み込みでハマったのでメモです。
ネットのブログでは、SDKのバージョンが6.X系の記事が多いのですが、7.xから少し変わっているようです。

今回の問題はビルドすると

var bannerView: GADBannerView = GADBannerView();

の箇所で次のエラーがでてしまいます。

Use of undeclared type ‘GADBannerView’

SDKは、

The Google Mobile Ads SDK for Android Version 7.2.2

です。

ソースコードは以下のとおり。

import UIKit

class ViewController: UIViewController {
	
	override func viewDidLoad() {
	
	//途中省略
	
	//↓で「Use of undeclared type 'GADBannerView'」発生
	var bannerView: GADBannerView = GADBannerView();	
	
        bannerView = GADBannerView(adSize:kGADAdSizeBanner);
        bannerView.adUnitID = "ca-app-pub-xxxxxxxxxxxxxx/xxxxxxxxx";//広告ユニットID
        
        //以下省略
        
      }
 }

GoogleMobileAdsをimportしてやればエラーは消えます。

import UIKit
import GoogleMobileAds //GoogleMobileAdsをimport

class ViewController: UIViewController {
	
	override func viewDidLoad() {
	
	//途中省略
	
	//↓エラーが消えます!
	var bannerView: GADBannerView = GADBannerView();	
	
        bannerView = GADBannerView(adSize:kGADAdSizeBanner);
        bannerView.adUnitID = "ca-app-pub-xxxxxxxxxxxxxx/xxxxxxxxx";//広告ユニットID
        
        //以下省略
        
      }
 }

わかってしまえば簡単ですね。

facebooktwittergoogle_plusredditpinterestlinkedinmail