UIViewControllerクラス

2013. 06. 01
・継承
UIResponderNSObject

・準拠
NSCoding
UIAppearanceContainer
NSObject (NSObject)

・フレームワーク
/System/Library/Frameworks/UIKit.framework

・利用可能
iOS 2.0以降で利用可能

・宣言
UINavigationController.h
UIPopoverController.h
UISplitViewController.h
UITabBarController.h
UIViewController.h

・手引書
iOS View Controllerプログラミングガイド
iOS View Controllerカタログ



●概要

UIViewControllerクラスは、全てのiOSアプリケーションの基本的なビュー管理モデルを提供します。
UIViewControllerオブジェクトを直接インスタンス化することは稀です。
代わりに、各サブクラスが実行する特定のタスクに基づいて、UIViewControllerクラスのサブクラスをインスタンス化します。
ビューコントローラは、アプリケーションのユーザインターフェイス部分を構成するビューのセットを管理します。
アプリケーションのコントロール層の一部として、ビューコントローラはモデルオブジェクトと(他のビューコントローラを含む)他のコントローラオブジェクトとの作用を調整し、アプリケーションに単一の一貫したユーザインターフェイスを提供します。

必要に応じて、ビューコントローラは以下のことを行います。
  • ビューのサイズ変更とレイアウト
  • ビューのコンテンツの調整
  • ユーザがビューと対話する時に、ビューに代わって実行
ビューコントローラはビューを厳密に管理し、イベントを処理するために使用されるレスポンダチェーンに参加します。
ビューコントローラはUIResponderクラスの子孫であり、管理ルートビューと(通常は別のビューコントローラに属する)そのスーパービュー間にレスポンダチェーンを挿入します。
ビューコントローラのビューがイベントを処理しない場合、ビューコントローラはイベントを処理するためのオプションを持っているか、スーパービューへイベントを渡すことができます。

ビューコントローラを単独で使用することは稀です。
代わりに、複数のビューコントローラを使用し、アプリケーションのユーザインターフェイスの一部をそれぞれ所有させます。
例えば、あるビューコントローラは項目のテーブルを管理し、別のビューコントローラがテーブルから選択された項目の表示を管理するという場合があります。
各ビューコントローラは、責任を持っているコンテンツを表示するために、所有するビューを表示します。


サブクラス化の注意

アプリケーションにはUIViewControllerのカスタムサブクラスが少なくとも一つ含まれており、多くの場合はいくつかあります。
これらのカスタムサブクラスは、ビューとユーザの対話を処理する方法など、アプリケーション固有の動作を定義します。
以下の項でカスタムサブクラスが実行するいくつかのタスクの簡単な概要を提供します。
カスタムサブクラスの実装についての詳細は、『iOS View Controllerプログラミングガイド』を参照してください。


ビューの管理

新しいUIViewControllerのサブクラスを定義する場合、コントローラが管理するビューを指定する必要があります。
典型的なビュー階層は(このクラスのviewプロパティで利用できるように参照している)柔軟な境界を持つビューと、実際のコンテンツを提供する一つ以上のサブビューで構成されています。
ルートビューのサイズと位置は、通常ビューコントローラを所有し、そのコンテンツを表示する別のオブジェクトによって決定されます。
ビューコントローラは、所有するオブジェクトによってルートビューに指定されたサイズに基づいて、所有している任意のサブビューの位置を決定します。
ビューコントローラは通常、ウィンドウまたは別のビューコントローラによって所有されています。
ビューコントローラがウィンドウオブジェクトによって所有されている場合、ウィンドウのルートビューコントローラとして機能します。
ビューコントローラのルートビューはウィンドウのサブビューとして追加され、ウィンドウを満たすようにサイズ変更されます。
ビューコントローラが別のビューコントローラによって所有されている場合、親ビューコントローラがいつ、どのように子ビューコントローラのコンテンツが表示されるかを決定します。

UIViewControllerクラスは、必要な時にビューコントローラのビューを読み込むための組み込みサポートを提供しています。
特にviewプロパティがアクセスした時は、ビューが自動的に読み込まれます。
アプリケーションでビューを読み込みを実装するには、いくつかの方法があります。
  • Interface Builderで生成したビューを、ストーリーボードを使用してビューコントローラに指定することができます。
    ストーリーボードには事前に構成されたビューコントローラとそれに関連付けされたビューが含まれており、アプリケーションのユーザインターフェイスを開発するための望ましい方法です。
    ストーリーボードの重要な利点は、アプリケーションの別のビューコントローラ間との関係を表現することができることです。
    例えば、あるビューコントローラのコンテンツが内部に別のビューコントローラを含んでいる、あるいはビューコントローラが別のビューコントローラから(セグエとして知られる)遷移として表示されていると指定することができます。
    ビューコントローラ間の関係を見れるようにすることで、ストーリーボードはアプリケーションの動作を一目見て容易に理解できます。

    実行時、ビューコントローラはビューを自動的にインスタンス化と設定するためにストーリーボードを使用します。
    多くの場合、ビューコントローラ自身はストーリーボードで定義されたセグエによって自動的に生成されます。
    ストーリーボードを使用してビューコントローラのコンテンツを定義する時は、ビューコントローラオブジェクトの割り当てや初期化を直接行わないでください。
    代わりに、ビューコントローラをプログラムでインスタンス化する必要がある時は、UIStoryboardオブジェクト上でinstantiateViewControllerWithIdentifier:メソッドを呼び出すことによって行ってください。

  • またInterface Builderで生成したnibファイルを使用して、ビューコントローラのビューを指定することができます。
    ストーリーボードと同様に、nibファイルでビューのセットを生成し構成することができます。
    ただし、ストーリーボードを使用する際にできるような、nibファイルを使用してビューコントローラ間の関係を容易に生成または表示することはできません。

    nibファイルを使用してビューコントローラオブジェクトを初期化するには、ビューコントローラによって使用されているnibファイルを指定するinitWithNibName:bundle:メソッドを使用します。
    その後、ビューコントローラがビューを読み込む必要がある場合は、nibファイルに格納されている情報を使用して、ビューを自動的に生成し構成します。

  • ストーリーボードやnibファイルでビューを定義することができない場合、手動でビュー階層をインスタンス化するためにloadViewメソッドをオーバーライドし、viewプロパティに割り当てます。
これらの技術の全ては、ビューの適切なセットを生成し、viewプロパティを介して表示されます。

重要:ビューコントローラは、ビューとそれらが生成する全てのサブビューの唯一の所有者です。
それらのビューを生成し、ビューコントローラ自身が解放された場合などの適切な時に所有権を放棄する責任があります。
ビューオブジェクトを格納するためにストーリーボードやnibファイルを使用する場合、ビューコントローラがそれらを要求した時に各ビューコントローラオブジェクトは自動的にビューの独自のコピーを取得します。
ただしビューを手動で生成する場合、複数のビューコントローラで同じビューオブジェクトを使用しないでください。

ビュー階層のビューを生成する時、常にビューの自動サイズ変更プロパティを設定する必要があります。
ビューコントローラが画面を表示する時、ルートビューは通常、ウィンドウの現在の向きやステータスバーなど他のインターフェイス要素の存在に依存して変化し得る利用可能な空間に合わせてサイズ変更します。
Interface BuilderのInspectorウィンドウを使用して、あるいは各ビューのautoresizesSubviewsautoresizingMaskのプロパティを変更することにより、自動サイズ変更プロパティを設定することができます。
ビューコントローラがポートレートとランドスケープの両方の向きをサポートする場合、これらのプロパティの設定は重要です。
向きを変更する際、システムは現在の向きに一致するように自動的にビューを再配置およびサイズ変更するために、これらのプロパティを使用します。
ビューコントローラがAuto Layoutをサポートし、他のビューコントローラの子である場合、これらの制約を無効にするためにビューのsetTranslatesAutoresizingMaskIntoConstraints:メソッドを呼び出す必要があります。


メモリ管理

メモリはiOSの重要なリソースであり、ビューコントローラは危機的な時にメモリのフットプリントを削減する組み込みサポートを提供しています。
UIViewControllerクラスは、不要なメモリを解放するためにdidReceiveMemoryWarningメソッドを介して、低メモリ状態での自動処理をいくつか提供します。

iOS 6より前では、低メモリの警告が発生した場合、後で再読み込みや再生成できると知っている時はUIViewControllerクラスがビューを破棄していました。
これが発生した場合、nibファイルから読み込まれたオブジェクトを含め、viewDidLoadメソッドで生成されたオブジェクトや、実行時に遅延生成されビュー階層に追加されたオブジェクトといった、ビュー階層で関連付けされている全てのオブジェクトの所有権を放棄する機会を与えるために、コードでviewWillUnloadviewDidUnloadメソッドを呼び出します。
iOS 6では、ビューは破棄されることは無く、これらのメソッドは呼び出されません。
メモリが低下した時に、ビューコントローラが特定のタスクを実行する必要がある場合は、didReceiveMemoryWarningメソッドをオーバーライドする必要があります。


ビューの回転の処理

iOS 6では、アプリケーションのInfo.plistファイルで定義されたインターフェイスの向きをサポートします。
ビューコントローラはサポートされている向きのリストを制限するsupportedInterfaceOrientationsメソッドをオーバーライドすることができます。
一般的に、システムはウィンドウのルートビューコントローラ、または画面全体を満たすために表示されるビューコントローラ上でのみ、このメソッドを呼び出します。
子ビューコントローラは親ビューコントローラによって提供されたウィンドウの一部を使用していますが、回転がサポートされているかについての決定に直接関与はしません。
アプリケーションの向きのマスクとビューコントローラの向きのマスクの交差は、ビューコントローラが回転させることができる向きを決定するために使用されます。

特定の向きでフルスクリーンを表示することを意図している場合、ビューコントローラのpreferredInterfaceOrientationForPresentationをオーバーライドすることができます。

iOS 5以前では、UIViewControllerクラスはポートレートモードのビューのみを表示します。
追加の向きをサポートするには、shouldAutorotateToInterfaceOrientation:メソッドをオーバーライドし、サブクラスがサポートする全ての向きでYESを返す必要があります。
ビューの自動サイズ変更プロパティが正確に設定されている場合、全てについて行う必要がある可能性があります。
ただし、UIViewControllerクラスは必要に応じて追加の動作を実装するために、追加のフックが提供されています。
一般的に、ビューコントローラが子ビューコントローラとして使用されることを意図している場合、全てのインターフェイスの向きをサポートする必要があります。

可視のビューコントローラで回転が発生した場合、willRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:、そしてdidRotateFromInterfaceOrientation:メソッドが回転中に呼び出されます。
親によってビューがサイズ変更や位置決めされた後にはviewWillLayoutSubviewsメソッドも呼び出されます。
ビューコントローラが可視でない場合に向きの変更が発生すると、回転メソッドは呼び出されません。
ただし、ビューが可視になる時にviewWillLayoutSubviewsメソッドが呼び出されます。
このメソッドの実装では、デバイスの向きを決定するためにstatusBarOrientationメソッドを呼び出すことができます。

:起動時にアプリケーションはポートレートの向きでインターフェイスを設定する必要があります。
application:didFinishLaunchingWithOptions:メソッドが戻った後、アプリケーションはウィンドウを表示する前に適切な向きにビューを回転させるためにビューコントローラの回転機構を使用します。


ビューのイベント通知

UIViewControllerクラスは、ビューコントローラのビューがウィンドウのビュー階層から追加や削除された時、またはサイズ変更された時など、多くの通知に応答します。
UIViewControllerクラスは、これらのイベントが発生した時に呼び出される特定のメソッドを提供します。
サブクラスは特定の動作を実装するために、これらのメソッドをオーバーライドすることができます。


コンテナビューコントローラの実装

カスタムのUIViewControllerサブクラスも、コンテナビューコントローラとして機能することができます。
コンテナビューコントローラは、子ビューコントローラとして知られている、所有している他のビューコントローラのコンテンツの表示を管理します。
子のビューはそのままで、あるいはコンテナビューコントローラによって所有されているビューと組み合わせて表示することができます。

コンテナビューコントローラのサブクラスは、子を関連付けるためのパブリックインターフェイスを宣言する必要があります。
これらのメソッドの性質は貴方次第であり、貴方が生成しているコンテナのセマンティクスに依存します。
ビューコントローラによって一度に表示ことができる子の数や、それらの子がいつ表示されるか、そしてビューコントローラのビュー階層に現れる場所を決定する必要があります。
ビューコントローラクラスは関係があれば、子によって共有されているかを定義します。
コンテナの完全なパブリックインターフェイスを確立することによって、どのようにコンテナが動作を実装しているかについて、多くのプライベートな細部にアクセスすること無く、子は論理的にその機能を使用していることを保証します。

コンテナビューコントローラは、ビュー階層に子のルートビューを追加する前に、自身と子ビューコントローラを関連付けする必要があります。
これにより、iOSが子ビューコントローラとそれらのコントローラが管理するビューにイベントを適切に送ることができます。
同様に、ビュー階層から子のルートビューを削除した後、自身から子ビューコントローラを切断する必要があります。
それらの連携を作成または破壊するには、コンテナが基底クラスによって定義されている特定のメソッドを呼び出します。
これらのメソッドはコンテナクラスのクライアントによって呼び出されることを意図しておらず、期待されているコンテナ動作を提供するために、コンテナの実装によってのみ使用されるべきです。

呼び出す必要のある必須メソッドは以下の通りです。

addChildViewController:
removeFromParentViewController
willMoveToParentViewController:
didMoveToParentViewController:

:コンテナビューコントローラを生成する時に、全てのメソッドをオーバーライドする必要はありません。
デフォルトでは、回転と外観のコールバックは自動的に子に転送されます。
この動作を自身で制御するには、shouldAutomaticallyForwardRotationMethodsshouldAutomaticallyForwardAppearanceMethodsメソッドを必要に応じてオーバーライドすることができます。



●タスク

●Nibファイルを使ったビューコントローラの生成

– initWithNibName:bundle:
  nibName    プロパティ
  nibBundle    プロパティ

●ストーリーボードの使用

– shouldPerformSegueWithIdentifier:sender:
– performSegueWithIdentifier:sender:
– prepareForSegue:sender:
   storyboard    プロパティ
– canPerformUnwindSegueAction:fromViewController:withSender:

●ビューの管理

  view    プロパティ
– isViewLoaded
– loadView
– viewDidLoad
  title    プロパティ
– viewDidUnload    iOS 6.0では非推奨
– viewWillUnload    iOS 6.0では非推奨

●メモリ警告の処理

– didReceiveMemoryWarning

●ビューイベントへの応答

– viewWillAppear:
– viewDidAppear:
– viewWillDisappear:
– viewDidDisappear:
– viewWillLayoutSubviews
– viewDidLayoutSubviews

●ビュー遷移の特定の種類のテスト

– isMovingFromParentViewController
– isMovingToParentViewController
– isBeingPresented
– isBeingDismissed

●ビューのレイアウト動作の構成

– updateViewConstraints
  wantsFullScreenLayout    プロパティ

●ビュー回転設定の構成

– shouldAutorotate
– supportedInterfaceOrientations
– preferredInterfaceOrientationForPresentation
  interfaceOrientation    プロパティ
+ attemptRotationToDeviceOrientation
– rotatingHeaderView
– rotatingFooterView
– shouldAutorotateToInterfaceOrientation:    iOS 6.0では非推奨

●ビュー回転イベントへの応答

– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:
– didAnimateFirstHalfOfRotationToInterfaceOrientation:    iOS 5.0では非推奨
– willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:    iOS 5.0では非推奨
– willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:    iOS 5.0では非推奨

●コンテナイベントへの応答

– willMoveToParentViewController:
– didMoveToParentViewController:

●ビューコントローラへの編集動作の追加

  editing    プロパティ
– setEditing:animated:

●状態復元の管理

  restorationIdentifier    プロパティ
  restorationClass    プロパティ
– encodeRestorableStateWithCoder:
– decodeRestorableStateWithCoder:

●別のビューコントローラのコンテンツの表示

– presentViewController:animated:completion:
– dismissViewControllerAnimated:completion:
  modalTransitionStyle    プロパティ
  modalPresentationStyle    プロパティ
  definesPresentationContext    プロパティ
  providesPresentationContextTransitionStyle    プロパティ
– disablesAutomaticKeyboardDismissal
– dismissModalViewControllerAnimated:    iOS 6.0では非推奨
– presentModalViewController:animated:    iOS 6.0では非推奨

●その他の関連ビューコントローラの取得

  presentingViewController    プロパティ
  presentedViewController    プロパティ
  parentViewController    プロパティ
  navigationController    プロパティ
  splitViewController    プロパティ
  tabBarController    プロパティ
  searchDisplayController    プロパティ
  modalViewController    プロパティ    iOS 6.0では非推奨

●カスタムコンテナの子ビューコントローラの管理

  childViewControllers    プロパティ
– addChildViewController:
– removeFromParentViewController
– shouldAutomaticallyForwardRotationMethods
– shouldAutomaticallyForwardAppearanceMethods
– transitionFromViewController:toViewController:duration:options:animations:completion:
– beginAppearanceTransition:animated:
– endAppearanceTransition
– viewControllerForUnwindSegueAction:fromViewController:withSender:
– segueForUnwindingToViewController:fromViewController:identifier:
– automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers    iOS 6.0では非推奨

●ナビゲーションインターフェイスの構成

  navigationItem    プロパティ
– editButtonItem
  hidesBottomBarWhenPushed    プロパティ
– setToolbarItems:animated:
  toolbarItems    プロパティ

●タブバーアイテムの構成

  tabBarItem    プロパティ

●ポップオーバーコントローラの表示の構成

  contentSizeForViewInPopover    プロパティ
  modalInPopover    プロパティ



●プロパティ

interfaceOrientation

インターフェイスの現在の向きを示します。(読み込みのみ)

@property(nonatomic, readonly) UIInterfaceOrientation interfaceOrientation

解説
有効な値はUIInterfaceOrientationで説明します。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


modalTransitionStyle

レシーバを表示する時に使用する遷移スタイルです。

@property(nonatomic, assign) UIModalTransitionStyle modalTransitionStyle

解説
このプロパティは、presentViewController:animated:completion:メソッドを使用して表示された時に、ビューコントローラの画面上でアニメーションする方法を決定します。
遷移の種類を変更するには、ビューコントローラを表示する前にこのプロパティを設定する必要があります。
このプロパティのデフォルト値はUIModalTransitionStyleCoverVerticalです。

遷移スタイルの有効なリストと、利用可能な表示スタイルとの互換性については、定数『遷移スタイルの表示』の説明を参照してください。

利用可能
iOS 3.0以降で利用可能

宣言
UIViewController.h


navigationController

ビューコントローラ階層内で最も近い祖先のナビゲーションコントローラです。(読み込みのみ)

@property(nonatomic, readonly, retain) UINavigationController*navigationController

解説
レシーバまたは祖先の一つがナビゲーションコントローラの子である場合、このプロパティは所有しているナビゲーションコントローラを含みます。
ビューコントローラがナビゲーションコントローラの内部に組み込まれていない場合、このプロパティはnilです。

利用可能
iOS 2.0以降で利用可能

宣言
UINavigationController.h


navigationItem

親のナビゲーションバーのビューコントローラを表示するために使用される、ナビゲーションアイテムです。(読み込みのみ)

@property(nonatomic, readonly, retain) UINavigationItem *navigationItem

解説
これはナビゲーションコントローラでプッシュされた時に、ビューコントローラが表示するために生成する、UINavigationItemの唯一のインスタンスです。
プロパティが最初にアクセスした時に、UINavigationItemオブジェクトが生成されます。
したがって、ビューコントローラの表示にナビゲーションコントローラを使用しない場合は、このプロパティにアクセスしてはいけません。
ナビゲーションアイテムが構成されていることを確実にするには、このプロパティをオーバーライドして最初にアクセスした時にバーボタンアイテムを生成するコードを追加するか、ビューコントローラの初期化コードでアイテムを生成します。

ビューコントローラのビューの生成に、ナビゲーションアイテムのバーボタンアイテムの生成を関連付けすることは避けてください。
ビューコントローラのナビゲーションアイテムは、ビューコントローラのビューとは独立して取得できます。
例えばナビゲーションスタックに二つのビューコントローラをプッシュした場合、最上位のビューコントローラは可視になりますが、他のビューコントローラのナビゲーションアイテムはバックボタンを表示するために取得することができます。

デフォルトの動作では、ビューコントローラのタイトルを表示するナビゲーションアイテムを生成します。

利用可能
iOS 2.0以降で利用可能

宣言
UINavigationController.h


title

このコントローラが管理するビューを表すローカライズした文字列です。

@property(nonatomic, copy) NSString *title

解説
サブクラスはユーザにビューを表す人が読める文字列のタイトルを設定する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


view

コントローラが管理するビューです。

@property(nonatomic, retain) UIView *view

解説
このプロパティに格納されているビューは、ビューコントローラのビュー階層のルートビューを表します。
このプロパティのデフォルト値はnilです。

このプロパティにアクセスし、その値が現在nilの場合、ビューコントローラは自動的にloadViewメソッドを呼び出し、その結果のビューを返します。

各ビューコントローラオブジェクトは、そのビューの唯一の所有者です。
複数のビューコントローラオブジェクトと同じビューオブジェクトを関連付けすることはできません。
この規則の唯一の例外は、コンテナビューコントローラが自身のビュー階層内のサブビューとしてこのビューを追加する場合です。
サブビューを追加する前に、コンテナは二つのビューコントローラオブジェクト間の親子関係を生成するために、addChildViewController:メソッドを最初に呼び出す必要があります。

このプロパティにアクセスするとビューが自動的に読み込まれる可能性があるため、ビューが現在メモリ内にあるかどうかを判断するisViewLoadedメソッドを使用することができます。
このプロパティとは異なり、現在メモリ内に存在しない場合でも、isViewLoadedプロパティはビューの読み込みを強制しません。

UIViewControllerクラスは、低メモリ状態の期間やビューコントローラ自身が最終的に解放された時に、このプロパティを自動的にnilに設定することができます。

ビューコントローラがどのようにビューの読み込みや破棄を行うかについての詳細は、『iOS View Controllerプログラミングガイド』のp.60『View Controllerにおけるリソース管理』を参照してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h



●クラスメソッド



●インスタンスメソッド

didReceiveMemoryWarning

アプリケーションがメモリ警告を受け取った時に、ビューコントローラに送信します。

- (void)didReceiveMemoryWarning

解説
アプリケーションが、このメソッドを直接呼び出すことはありません。
代わりに、システムが利用可能なメモリ量が低下していると判断した時に、このメソッドは呼び出されます。

ビューコントローラによって使用される追加のメモリを解放するために、このメソッドをオーバーライドすることができます。
その場合、このメソッドの実装ではいくつかの時点でsuperを呼び出す必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


dismissModalViewControllerAnimated:

レシーバによって表示されたビューコントローラを閉じます。
(iOS 6.0では非推奨。代わりにdismissViewControllerAnimated:completion:を使用してください。)

- (void)dismissModalViewControllerAnimated:(BOOL)animated

パラメータ
animated
YESの場合、このメソッドはビューを閉じる際にアニメーションし、それ以外の場合はアニメーションしません。
アニメーションのスタイルは、閉じるビューコントローラのmodalTransitionStyleプロパティの値によって決定されます。

解説
表示するビューコントローラは、表示したビューコントローラを閉じる責任があります。
表示されたビューコントローラ自身でこのメソッドを呼び出す場合は、表示するビューコントローラに自動的にメッセージを転送します。

連続でいくつかのビューコントローラを表示し、表示されたビューコントローラのスタックを構築する場合、スタックの下位のビューコントローラ上でこのメソッドを呼び出すと、直接の子ビューコントローラとスタック上の子より上の全てのビューコントローラを閉じます。
これが発生すると、唯一の最上位のビューはアニメーション化されて閉じられ、全ての中間のビューコントローラは単にスタックから削除されます。
最上位のビューはモーダル遷移スタイルを使用して閉じられ、スタック内の下位にある他のビューコントローラによって使用されたものと異なる場合があります。

レシーバの表示されたビューコントローラへの参照を保持したい場合は、このメソッドを呼び出す前にmodalViewControllerプロパティで値を取得してください。

利用可能
iOS 2.0以降で利用可能
iOS 6.0で非推奨

宣言
UIViewController.h


initWithNibName:bundle:

指定されたバンドル内のnibファイルで新たに初期化されたビューコントローラを返します。

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

パラメータ
nibName
ビューコントローラに関連付けられるnibファイル名です。
nibファイル名は先頭にパス情報を含めてはいけません。
nilを指定した場合、nibNameプロパティはnilに設定されます。
nibBundle
nibファイルを検索するためのバンドルを指定します。
このメソッドは、最初にバンドルの言語固有のプロジェクトディレクトリ内のnibファイルを、次にResourcesディレクトリを検索します。
nilの場合、このメソッドはメインバンドル内のnibファイルを検索します。

戻り値
新しく初期化されたUIViewControllerオブジェクトです。

解説
これはこのクラスの指定イニシャライザです。

指定したnibファイルはすぐには読み込まれません。
ビューコントローラのビューが最初にアクセスした時に読み込まれます。
nibファイルを読み込んだ後で追加の初期化を実行したい場合は、viewDidLoadメソッドをオーバーライドし、そこで貴方のタスクを実行します。

nibNameパラメータにnilを指定してloadViewメソッドをオーバーライドしない場合、ビューコントローラは他の手段を使用してnibファイルを検索します。
nibNameを参照してください。

アプリケーションがビューコントローラとそれに関連するビューの定義にストーリーボードを使用している場合、アプリケーションがそのクラスのオブジェクトを直接初期化することはありません。
代わりにビューコントローラは、セグエがトリガーされた時はiOSによって自動的に、またはアプリケーションがストーリーボードオブジェクトのinstantiateViewControllerWithIdentifier:メソッドを呼び出した時はプログラムで、ストーリーボードによってインスタンス化されます。
ストーリーボードからビューコントローラをインスタンス化する時、iOSは代わりにinitWithCoder:メソッドを呼び出すことによって新しいビューコントローラを初期化します。
iOSはストーリーボード内に格納されているnibファイルに、nibNameプロパティを自動的に設定します。

ビューコントローラがビューを読み込む方法についての詳細は、『iOS View Controllerプログラミングガイド』のp.60『View Controllerにおけるリソース管理』を参照してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


loadView

コントローラが管理するビューを生成します。

- (void)loadView

解説
このメソッドを直接呼び出さないでください。
ビューコントローラはviewプロパティが要求された時にこのメソッドを呼び出しますが、現在はnilになっています。
このメソッドはビューを読み込む、または生成し、viewプロパティに割り当てます。

ビューコントローラが関連付けされたnibファイルを持っている場合、このメソッドはnibファイルからビューを読み込みます。
nibNameプロパティがnil以外の値を返した場合や、ビューコントローラがストーリーボードからインスタンス化された場合、initWithNibName:bundle:メソッドを使用して明示的にnibファイルを割り当てた場合、またはiOSがビューコントローラのクラス名に基づいた名前を持つアプリケーションバンドル内でnibファイルを見つけた場合、ビューコントローラは関連付けされたnibファイルを持っています。
ビューコントローラが関連付けされたnibファイルを持っていない場合、このメソッドは代わりにプレーンのUIViewオブジェクトを生成します。

ビューの生成とビューコントローラの初期化にInterface Builderを使用する場合、このメソッドをオーバーライドしてはいけません。

手動でビューを生成するために、このメソッドをオーバーライドすることができます。
この方法を選択した場合、viewプロパティにビュー階層のルートビューを割り当てます。
生成したビューは唯一のインスタンスである必要があり、他の全てのビューコントローラオブジェクトと共有してはいけません。
このメソッドのカスタム実装でsuperを呼び出してはいけません。

ビューに追加の初期化を実行したい場合は、viewDidLoadメソッドで行ってください。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


presentModalViewController:animated:

ユーザに指定されたビューコントローラによって管理されるモーダルビューを表示します。
(iOS 6.0では非推奨。代わりにpresentViewController:animated:completion:メソッドを使用してください。)

- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated

パラメータ
modalViewController
モーダルビューを管理するビューコントローラを指定します。
animated
YESの場合はビューを表示する際にアニメーションし、それ以外の場合はアニメーションしません。

解説
iPhoneやiPod touchデバイス上では、modalViewControllerのビューは常にフルスクリーンで表示されます。
iPadでは、modalPresentationStyleプロパティの値に依存して表示されます。

指定されたビューコントローラにmodalViewControllerプロパティを設定します。
そのビューをサイズ変更し、ビュー階層へアタッチします。

ビューは、modalViewControllerパラメータにコントローラのmodalTransitionStyleプロパティで指定された遷移スタイルに合わせてアニメーション化されます。

利用可能
iOS 2.0以降で利用可能
iOS 6.0で非推奨

宣言
UIViewController.h


shouldAutorotateToInterfaceOrientation:

ビューコントローラが指定された向きをサポートするかどうかを示すブール値を返します。
(iOS 6.0では非推奨。代わりにsupportedInterfaceOrientationspreferredInterfaceOrientationForPresentationをオーバーライドしてください。)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

パラメータ
interfaceOrientation
回転後のアプリケーションのユーザインターフェイスの向きを指定します。
有効な値はUIInterfaceOrientationで説明されています。

戻り値
ビューコントローラがビューを指定された向きに自動回転させる場合はYES、そうでない場合はNOを返します。

解説
デフォルトでは、このメソッドはUIInterfaceOrientationPortraitの向きでのみYESを返します。
ビューコントローラに追加の向きをサポートさせる場合は、サポートする全ての向きでYESを返すように、このメソッドをオーバーライドしてください。

このメソッドの実装は、interfaceOrientationパラメータの値に基づいて、単にYESまたはNOを返すだけです。
interfaceOrientationプロパティの値を取得したり、UIDeviceクラスによって向きの値を報告させてチェックしたりしないでください。
ビューコントローラは指定された向きをサポートできるか否かのいずれかです。

利用可能
iOS 2.0以降で利用可能
iOS 6.0で非推奨

宣言
UIViewController.h


viewDidAppear:

ビュー階層にビューが追加されたことを、ビューコントローラに通知します。

- (void)viewDidAppear:(BOOL)animated

パラメータ
animated
YESの場合、ウィンドウにビューを追加する際にアニメーションを使います。

解説
ビューの表示に関連付けされている追加のタスクを実行するために、このメソッドをオーバーライドすることができます。
このメソッドをオーバーライドする場合、実装の中のいくつかの点でsuperを呼び出す必要があります。

:ビューコントローラがポップオーバーの内部のビューコントローラによって表示されている場合、表示したコントローラが閉じられた後に、このメソッドを表示するビューコントローラ上で呼び出すことはできません。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


viewDidDisappear:

ビュー階層からビューが削除されたことを、ビューコントローラに通知します。

- (void)viewDidDisappear:(BOOL)animated

パラメータ
animated
YESの場合、ビューを破棄した際にアニメーションを行います。

解説
破棄または非表示するビューに関連付けされている追加のタスクを実行するために、このメソッドをオーバーライドすることができます。
このメソッドをオーバーライドする場合、実装の中のいくつかの点でsuperを呼び出す必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


viewDidLoad

コントローラのビューがメモリに読み込まれた後に呼び出されます。

- (void)viewDidLoad

解説
このメソッドは、ビューコントローラがメモリ内にビュー階層を読み込んだ後に呼び出されます。
このメソッドは、ビュー階層がnibファイルから読み込まれた、またはloadViewメソッドでプログラムによって生成されるたかどうかに関係なく呼び出されます。
通常、nibファイルから読み込まれたビューに追加の初期化を実行するために、このメソッドをオーバーライドします。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


viewDidUnload

コントローラのビューがメモリから解放された時に呼び出されます。
(iOS 6.0では非推奨。ビューはもはや低メモリ状態下では破棄されないので、このメソッドが呼び出されることはありません。)

- (void)viewDidUnload

解説
低メモリ状態が発生し、現在のビューコントローラのビューが必要でない場合、システムはメモリからそれらのビューの削除を選ぶことができます。
このメソッドはビューコントローラのビューが解放された後に呼び出され、最終的なクリーンアップを実行する機会となります。
ビューコントローラがビューやサブビューに別の参照を格納している場合、それらの参照を解放するためにこのメソッドを使用する必要があります。
またビューをサポートするために生成したが、そのビューが現在無く最早必要でなくなった任意のオブジェクトへの参照を削除するために、このメソッドを使用することができます。
ユーザデータの解放や容易に再生成することができない他の情報の解放に、このメソッドを使用するべきではありません。

このメソッドが呼び出された時、viewプロパティはnilになります。

利用可能
iOS 3.0以降で利用可能
iOS 6.0で非推奨

宣言
UIViewController.h


viewWillAppear:

ビューがビュー階層に追加されようとしていることを、ビューコントローラに通知します。

- (void)viewWillAppear:(BOOL)animated

パラメータ
animated
YESの場合、ウィンドウにビューを追加する際にアニメーションを使います。

解説
このメソッドは、レシーバのビューがビュー階層に追加されようとする前に呼び出され、アニメーションはビューを表示するために構成されています。
ビューの表示に関連付けされているカスタムのタスクを実行するために、このメソッドをオーバーライドすることができます。
例えば、表示されているビューの向きやスタイルに合わせて調整するために、ステータスバーの向きやスタイルを変更するには、このメソッドを使用することができます。
このメソッドをオーバーライドする場合、実装の中のいくつかの点でsuperを呼び出す必要があります。

ビューコントローラによってビューがビュー階層に追加される方法や、発生する一連のメッセージについての詳細は『iOS View Controller プログラミングガイド』のp.71『表示関連の通知への応答』を参照してください。

:ビューコントローラがポップオーバーの内部のビューコントローラによって表示されている場合、表示したコントローラが閉じられた後に、このメソッドを表示するビューコントローラ上で呼び出すことはできません。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


viewWillDisappear:

ビュー階層からビューが削除されようとしていることを、ビューコントローラに通知します。

- (void)viewWillDisappear:(BOOL)animated

パラメータ
animated
YESの場合、ビューを破棄する際にアニメーションが始まります。

解説
このメソッドは、ビュー階層からビューが削除されることに応答して呼び出されます。
このメソッドはビューが実際に削除される前、およびアニメーションが構成される前に呼び出されます。

サブクラスはこのメソッドをオーバーライドして変更の編集を送信するために使用することができ、ビューのファーストレスポンダの破棄や、他の関連するタスクを実行します。
例えば、ビューがファーストレスポンダで、viewDidDisappear:メソッドで作成されたステータスバーの向きやスタイルの変更を元に戻すには、このメソッドを使用することができます。
このメソッドをオーバーライドする場合、実装の中のいくつかの点でsuperを呼び出す必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIViewController.h


willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:

ユーザインターフェイスの回転の前半の前に、ビューコントローラに送信されます。
(iOS 5.0では非推奨。代わりに一行程で回転する技術を使用してください。
willAnimateRotationToInterfaceOrientation:duration:メソッドを参照してください。)

- (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

パラメータ
toInterfaceOrientation
回転する前のアプリケーションのユーザインターフェイスの向きの状態を指定します。
有効な値はUIInterfaceOrientationで説明しています。
duration
回転を保留する前半の期間を秒単位で指定します。

解説
このメソッドのデフォルトの実装は何もしません。

このメソッドはビューを回転し、ヘッダーとフッターのビュー外にスライドさせるために使用され、アニメーションブロック内から呼び出されます。
このメソッドをオーバーライドし、ビューの回転の前半中に発生させる必要のある追加のアニメーションを構成に使用することができます。
例えば、コンテンツのズームレベルの調整や、スクロール位置の変更、またはビューの他のアニメーション可能なプロパティの変更に使用することができます。

このメソッドが呼び出された時点では、interfaceOrientationプロパティはまだ古い向きに設定されています。

利用可能
iOS 2.0以降で利用可能
iOS 5.0で非推奨

宣言
UIViewController.h


willAnimateRotationToInterfaceOrientation:duration:

一行程でユーザインターフェイスの回転を実行する前に、ビューコントローラに送信されます。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

パラメータ
interfaceOrientation
ユーザインターフェイスの新しい向きを指定します。
有効な値はUIInterfaceOrientationで説明しています。
duration
回転を保留する期間を秒単位で指定します。

解説
このメソッドはビューを回転するために使用されるアニメーションブロック内から呼び出されます。
このメソッドをオーバーライドし、ビューの回転中に発生させる必要のある追加のアニメーションを構成に使用することができます。
例えば、コンテンツのズームレベルの調整や、スクロール位置の変更、またはビューの他のアニメーション可能なプロパティの変更に使用することができます。

:位置の内外にヘッダーとフッターのビューをスライドさせるために使用されるアニメーションは、別のアニメーションブロックで実行されます。

このメソッドが呼び出された時点で、interfaceOrientationプロパティは既に新しい向きに設定され、ビューの境界変更されています。
したがって、このメソッドのビューによって必要な追加のレイアウトを実行することができます。

利用可能
iOS 3.0以降で利用可能

宣言
UIViewController.h


willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:

ユーザインターフェイスの回転の後半の前に、ビューコントローラに送信されます。
(iOS 5.0では非推奨。代わりに一行程で回転する技術を使用してください。
willAnimateRotationToInterfaceOrientation:duration:メソッドを参照してください。)

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration

パラメータ
fromInterfaceOrientation
回転する前のアプリケーションのユーザインターフェイスの向きの状態を指定します。
有効な値はUIInterfaceOrientationで説明しています。
duration
回転を保留する後半の期間を秒単位で指定します。

解説
このメソッドのデフォルトの実装は何もしません。

このメソッドはビューの回転を終了し、ヘッダーとフッターのビューを元の位置に戻すために使用され、アニメーションブロック内から呼び出されます。
このメソッドをオーバーライドし、ビューの回転の後半中に発生させる必要のある追加のアニメーションを構成に使用することができます。
例えば、コンテンツのズームレベルの調整や、スクロール位置の変更、またはビューの他のアニメーション可能なプロパティの変更に使用することができます。

このメソッドが呼び出された時点では、interfaceOrientationプロパティは新しい向きに設定されています。

利用可能
iOS 2.0以降で利用可能
iOS 5.0で非推奨

宣言
UIViewController.h



●定数

遷移スタイルの表示

ビューコントローラを表示する時に利用できる遷移スタイルです。

typedef enum {
    UIModalTransitionStyleCoverVertical = 0,
    UIModalTransitionStyleFlipHorizontal,
    UIModalTransitionStyleCrossDissolve,
    UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;

定数

UIModalTransitionStyleCoverVertical
ビューコントローラが表示される時、画面の下部から上にビューがスライドします。
閉じる時はビューが下にスライドして戻ります。
これはデフォルトの遷移スタイルです。
iOS 3.0以降で利用可能
UIViewController.hで宣言

UIModalTransitionStyleFlipHorizontal
ビューコントローラが表示される時、現在のビューが右から左に3Dで水平方向に回転し始め、その結果以前のビューの背面として新しいビューがあるように見えます。
閉じる時は左から右に回転し元のビューに戻ります。
iOS 3.0以降で利用可能
UIViewController.hで宣言

UIModalTransitionStyleCrossDissolve
ビューコントローラが表示される時、現在のビューがフェードアウトすると同時に、新しいビューがフェードインします。
閉じる時は同様なクロスフェードで元のビューに戻ります。
iOS 3.0以降で利用可能
UIViewController.hで宣言

UIModalTransitionStylePartialCurl
ビューコントローラが表示される時、現在のビューの一角がその下にあるビューを現すためにカールアップします。
閉じる時は表示されていたビューの上にカールアップしたページが広がって戻ります。
この遷移を使用して表示されたビューは、それ自身にビューを追加表示することを防止します。
この遷移スタイルは、親ビューコントローラがフルスクリーンビューで表示されていて、UIModalPresentationFullScreenモーダル表示スタイルを使用している場合のみサポートされています。
親ビューのために異なる形式要素や異なる表示スタイルの使用を試みると例外が発生します。
iOS 3.2以降で利用可能
UIViewController.hで宣言



参考文献

UIViewController Class Reference

ITmediaエンタープライズ/Gartner Column:第11回 そもそも「セマンティクス」とは何だろう?






Lifestyle 650 home entertainment system
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
10 | 2017/11 | 12
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Lifestyle 650 home entertainment system
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR