2014年6月8日日曜日

週明けにswiftいじってたわ〜と自慢するための練習コード



リリース直後に出張出てしまいまったく触れていなかった、Swiftというか新しいUIKitにやっと触れました・・・

NDAでなんぞゴタゴタしてますが、現地で聞いて来た方によれば今回はそこらへんはAppleは寛容な様子。私も流行に乗って少しだけコード書いて動かしてみたので、明日自慢できるよう備忘録的にコードを残します・・・

いじってみた感想としては


  1. iOS8に超期待を持てた
  2. swift書きやすい
  3. headerないの気持ち悪い
  4. 書き方に慣れるのはそこまで大変じゃなさそう
  5. xcode6Betaはまだ未知数
  6. APIの仕様変更がけっこうありそうで怖い
  7. タダでさえ長かったメソッド名が超長くなってるnavigationControllerPreferredInterfaceOrientationForPresentationとか
  8. xcode6Betaで補完がきかない(まだ未実装?環境のせい?
  9. Delegateの使い方とかちょっとJava書いてる感じがあった
  10. AlertControllerに期待

こんなとこでしょうか。
まだ未知数な部分が多過ぎだし、プロダクトに落とし込むのは先でしょうが
常にチェックしていきたいですね。

import UIKit

// Delegateの使い方が謎だったけど、後ろにくっつけるだけだ
class ViewController: UIViewController, UIScrollViewDelegate{
                            
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        // ScrollViewを追加してみる
        let sc = UIScrollView();
        sc.frame = self.view.frame;
        sc.backgroundColor = UIColor.redColor();
        sc.delegate = self;
        
        // CGSizeにラベルが!!これは・・・
        sc.contentSize = CGSize(width: 500,height: 500)
        self.view.addSubview(sc);
        
        // ボタンを追加してみる
        let settings = UIButton()
        settings.addTarget(self, action: "touchedSet:", forControlEvents: UIControlEvents.TouchUpInside)
        settings.setTitle("Button", forState: .Normal)
        settings.frame = CGRectMake(0, 0, 150, 50)
        sc.addSubview(settings)
        
        // NSUserDefault
        let def = NSUserDefaults()
        let saveStr = "save Strng"
        def.setObject(saveStr, forKey: "key");
        
        
    }
    
    // ボタンアクション
    func touchedSet(sender : AnyObject)
    {
        /*
        // log出力はいつも通りだからNSLumberJackも大丈夫そうだなぁ
        NSLog("add %d", 10);
        // ViewController追加、コメントssss入力時にも補完が出た!!これxcode5でもあったっけ?
        
        /* コメントアウトの中でコメントアウトが動く
        let vc = UIViewController()
        let nv = UINavigationController(rootViewController: vc);
        */
        // リファレンスを見ていたらnavigationControllerPreferredInterfaceOrientationForPresentationという関数があってswiftこわいってなった
        // ここでtrue でなく YESにしたらエラーでた
        self.navigationController.pushViewController(vc, animated: true);
        // pushのときにちょっとアニメーションが変わってた
        */
        
        // stackoverflowより
        // リダレンスより "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead"
        // iOS8からはAlertControlerというのが出た。
        // http://stackoverflow.com/questions/24022479/how-would-i-create-a-uialertview-in-swift
        //
        // completion block
        // http://stackoverflow.com/questions/24071334/blocks-on-swift-animatewithdurationanimationscompletion
        var alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: {
                println("表示時に呼ばれるBlock")
                return nil;
            }()))
        self.presentViewController(alert, animated: true, completion: {
            NSLog("表示完了時に呼ばれるBlock")
            })
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func scrollViewDidScroll(scrollView: UIScrollView!)
    {
        // scroll領域取得
        NSLog("%f %f", scrollView.contentOffset.x,scrollView.contentOffset.y);
    }
}


0 件のコメント:

コメントを投稿

ShareThis