Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

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()
    }
    
}

画像の表示位置は適当な数値が入っていますので修正くださいませ。

まとめ

いつも悩んでいた画面遷移もこれで少しは自分なりに整理できたのではと思います。何かお役にたてていれば感謝です。

↓こんな記事もありますよ!

NSThreadでスレッド処理を行う

タイマー処理と同様に利用できるスレッドの処理です。NSTimerではヒゲがのびたサンプルでしたので眉毛の濃くなるサンプルにしてみます。ただ、どうやらThread処理は 推奨されておらず、dispatch_queueを使用するべきのようです。

UIActivityIndicatorView

iOSでローディングをする簡単な方法は標準のインディケータを表示する方法です。画面中央でぐるぐる回ります。

UISwitchで切り替えスイッチコントロール

スイッチによるONOFFを実装するためのコントロールの説明です。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!