HOME > PushViewControllerで横に画面遷移
PushViewControllerで横に画面遷移
iOSアプリでUIViewControllerを遷移させる時にいつも悩んでしまうのはpushviewcontrollerとpresentviewcontrollerのどちらを使うか。 どちらも遷移する方法ですが、pushviewcontrollerはNavigationControllerの上でUIViewControllerを配列のように出し入れするのに対して、 presentviewcontorollerはNavigatoinは関係なく画面遷移させることができます。pushviewcontrollerは簡単に追加追加を繰り返したり、 を自動で処理を受け持ってくれるので便利です。presentviewcontrollerも簡単な画面追加なんかだと力を発揮します。
この記事ではpushviewcontrollerを解説します。presentviewcontrollerはこちらの記事から確認することができます。
参考:swiftで画面遷移:UINavigationController
参考:storyboardを使わず、Swiftでナビゲーションバーをつくる(UINavigationControllerとか)
参考:012 UINavigationControllerの表示
参考:Swift - pushViewController from appDelegate, rootViewController.navigationController is nil
やってみた
まずは上図の様にNavigationControllerを親Viewに追加する必要があります。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
private var window: UIWindow?
private var nc: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
let myFirstViewController: FirstViewController = FirstViewController()
nc = UINavigationController(rootViewController: myFirstViewController)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = nc
self.window?.makeKeyAndVisible()
return true
}
}
NavigationControllerを作成して、最初に表示させたいViewControllerをNavigationに追加します。(最初に表示されるView)
FirstViewController
import UIKit
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.whiteColor();
let url = NSURL(string:"http://swift-salaryman.com/files/icon_1.gif");
//http://swift-salaryman.com/files/icon_1.gif
var err: NSError?;
var imageData = NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!;
var img = UIImage(data:imageData);
let iv = UIImageView(image:img);
iv.frame = CGRectMake(10, 50, 300, 300);
self.view.addSubview(iv);
//灰色のボタン生成
var button = UIButton(frame: CGRectMake(10, 500, 250, 50));
button.backgroundColor = UIColor.grayColor();
button.addTarget(self, action: "btn_click:", forControlEvents:.TouchUpInside);
button.setTitle("pushviewcontroller", forState: UIControlState.Normal);
self.view.addSubview(button);
}
func btn_click(sender: UIButton){
let secondViewController = SecondViewController()
self.navigationController?.pushViewController(secondViewController, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
SecondViewController
import UIKit
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://swift-salaryman.com/files/image/page_top.gif");
//http://swift-salaryman.com/files/icon_1.gif
var err: NSError?;
var imageData = NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!;
var img = UIImage(data:imageData);
let iv = UIImageView(image:img);
iv.frame = CGRectMake(10, 50, 300, 300);
self.view.addSubview(iv);
self.view.backgroundColor = UIColor.whiteColor();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
画像の表示位置は適当な数値が入っていますので修正くださいませ。
まとめ
いつも悩んでいた画面遷移もこれで少しは自分なりに整理できたのではと思います。何かお役にたてていれば感謝です。
↓こんな記事もありますよ!
![]() | NSFileManagerでAPP保存領域のデータ操作ファイルやディレクトリ作成はなんとなく面倒くさいイメージがありましたが、この記事で少し自分の中で壁が低くなった気がします。 よろしければご利用くださいませ。 |
![]() | presentViewControllerで画面遷移下からビョーン下からビョーンとUIViewControllerを出す方法を記載します。この処理も多用していたのですがこのHPになかったので追記しました。 Navigationと連動させた横へシャーと移動するスライドの関数(pop)とは違うので注意です。 |
![]() | RSSリーダで利用するAPIを検証してみるニュースアプリの様なRSSを表示させたいのですがXMLを処理するAPIが数点存在するようです。 Swiftにあったものを見つけ出せたらと思います。 |
Tweet
![]() |
|||
|