swift Pod使用時プロトコルが使えない!!

めもです。

CocoaPodを使用し
Bridge-Headerを使い ほにゃらら.h ファイルをimportした後
importしたクラスを使用する際

クラス定義した際
"ほにゃらら does not conform to protocol"
と怒られ
エラーの出るプロトコルと出ないプロトコルが出てくる

解決策は
プロトコルの実装必須になっているメソッドを宣言してあげれば
解決します。
ほにゃらら.h に @required と宣言してあるメソッドになります。


SwiftでType ViewController does not conform to protocol UITableViewDataSourceのエラー解決方法 | MIRAI STEREO

swift で obj-c のファイルが使えない

めもです。

Podを使用しobj-cのファイルimportしようとしたのだが

'---.h' file not found

とデバックがでる際の解決策

PROJECT→info→Configurationsの

 1.Debugを
  None→Pods.debug

 2.Releaseを
  None→Pods.release

にする。

f:id:tomo358:20150201144516p:plain


iOS - CocoaPodsを使ってビルドが失敗する時にチェックすること - Qiita


参考
cocoa podの使い方

iOSライブラリ管理ツール「CocoaPods」の使用方法 - Qiita


Bridger-Headerの記載方法

SwiftからObjective-Cのライブラリ使う - まさたか日記

Swift勉強 "SwiftのRSS Readerを100行で作ったよ" から何かを得よう

今回は
題名の通り

iPhone - SwiftのRSS Readerを100行で作ったよ - Qiita
を読み解いて何かを得たいと思います。

目的

独学でアプリ作りの勉強をやっているが
コードの書き方等、効率が悪い様に思えてならない・・・
そこで
一般的?にどんな風に書かれているか
読み解いてみます。

動かしてみる

まずはgithubからダウンロードします。
"Download ZIP"でダウンロードできます。

wantedly/swift-rss-sample · GitHub

ほいで
ダウンロードしたファイルを開き
"RSSReader.xcodeproj"をxcodeで開く

ほいでほいで
Buildしてみると

Build Failed

あー
xcodeさんいわく
"Shell Script Invocation Podfile.lock : Error No such file or directory"
"Shell Script Invocation Manifest.lock : Error No such file or directory"
のせいでBuildできないらしいです。

どうやら
Podfile.lock と Manifest.lock というファイルが見つかんないそうです。

ライブラリ

Podfileというのは
cocoapod(ライブラリ管理ツール)のファイルのようです。

「生産性ガチアゲなオープンソースiOSライブラリ」最新記事一覧 - ITmedia Keywords

で現在ライブラリの勉強中なので
またわかり次第更新します。

SWIFT UIBUTTON タップによる動作

前回UIBUTTON を表示させたので

今回は表示させたボタンをタップし
アクション(画面遷移 etc...)を呼ぶ設定します。

サンプルコード

"テスト"と記載しているボタンをタップすると
コンソールに"ok"と表示させる。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        var testButton = UIButton()
        testButton.frame = CGRectMake(10, 20, 300, 40)
        testButton.backgroundColor = UIColor.redColor()
        testButton.setTitle("テスト", forState: UIControlState.Normal)
        
//タップ時の処理を設定
        testButton.addTarget(self, action: "touchTestButton:", forControlEvents: UIControlEvents.TouchDown)
        
        self.view.addSubview(testButton)
    }

//タップ時の処理
    func touchTestButton(UIButton){
        print("ok")
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


}

解説

追加したコードは以下です。

//①タップ時の処理を設定
        testButton.addTarget(self, action: "touchTestButton:", forControlEvents: UIControlEvents.TouchDown)

//②タップ時の処理
    func touchTestButton(UIButton){
        print("ok")
    }

まず①ですが
このコードで指定しているのは

ターゲットを"self"(自クラス)に

 →ターゲットがなんぞやというのはわかりません
  とりあえず"self"と記述すれば正常に動きます。

タップ時に"touchTestButton"という関数(処理)を実行

 →関数名は好きなようにつけれます。

ボタンが実行されるタイミングを"TouchDown"(タップした直後)に指定

 →他の設定として複数回タップした時等あります。
  UIControl - iPhoneアプリ開発の虎の巻

次に②では
①で指定した関数の処理を記載したいます。
今回は例として
コンソールに"ok" と表示する処理にしました。


これでボタンのタップによる動作が可能になります。

動的にUI BUTTONを作る

殴り書きです。

動的にボタンの作成

必須
 インスタンスを作る
 ボタンの位置、サイズの指定
任意
 ボタンに表示する文字の指定
 ボタンを押した時の動作の指定
ETC...

インスタンスを作る

まずUIBUTTON クラスのインスタンスを作成
インスタンス名(testButton)は任意

//インスタンスの作成
var testButton = UIButton()

これでいちおボタンは完成!!
ただこれでVIEWに表示させても
何も表示されません

//インスタンスの作成
var testButton = UIButton()

//画面に表示
self.view.addSubview(testButton)

なので次は

・ボタンの位置、サイズの指定

下記条件で作成すると

位置 [単位:ピクセル]
 上端からの距離:10
 左端からの距離:20
サイズ [単位:ピクセル]
 横幅     :300
 縦幅     :40

//インスタンスの作成
var testButton = UIButton()

//ボタンの位置、サイズの指定
testButton.frame = CGRectMake(10, 20, 300, 40)

//画面に表示
self.view.addSubview(testButton)

これでとりあえずボタンは画面に表示されます!!

ただ
ボタンの色
表示される文字
等を指定していないので
見えません・・・

なので次は

・背景色、文字の設定

下記条件で作成すると

背景色 :赤
文字  :テスト

//インスタンスの作成
var testButton = UIButton()

//ボタンの位置、サイズの指定
testButton.frame = CGRectMake(10, 20, 30, 40)

//背景色の指定
testButton.backgroundColor = UIColor.redColor()

//文字の指定
testButton.setTitle("テスト", forState: UIControlState.Normal)

//画面に表示
self.view.addSubview(testButton)

これで視覚的に認識出来るボタンの完成です!!

他の機能に関しては
また後日。

技術ブログ 書き方

はてぶで技術ブログ書くにあたって
 1. コードを綺麗に書く方法
 2. 参考にしたブログ等のリンクの貼り方
を書きます!!

1.コードを綺麗に書く方法

まずどのようになるかというと

・普通に書くと
function runTimer(){
document.getElementById('time').innerHTML = (((new Date()).getTime() - startTime) / 1000).toFixed(1);
timer = setTimeout(function(){
runTimer();
}, 100);
}

・綺麗に書くと

   function runTimer(){
     document.getElementById('time').innerHTML = (((new Date()).getTime() - startTime) / 1000).toFixed(1);
     timer = setTimeout(function(){
         runTimer();
     }, 100);
   }

何をしたかというと
 背景を灰色にし強調する
 コードを色分けしてくれる
その他にもいろいろ綺麗に見せる手法あるますが
まずはこの2つ

背景を灰色にする方法

はてな技法モードをオンにする
 初期設定では見たままモードになっていると思うので
 はてな技法モードを選択
 [ダッシュボード]▶︎[設定]▶︎[編集モード]▶︎[はてな技法モード]をオン
  
 参考:
 はてなブログでソースコードを貼る方法 - メモやなぎ


②記事に">||" "||<" を書く
 記事を書く際にコードの前に">||" 後に"||<"をつけます
 必ず行頭に書いてください。

 >||
 function runtime()
 ||<

と書くと

 function runtime()

で完了!!!

コードを色分けしてくれる

①">||"の"||"の間に言語名を書く
 ※ ">|?|"と書くと自動識別されます。
 ※ swiftはまだ対応していませんでした・・・(2014/10/12現在)

 >|javascript|
 function runtime()
 ||<

と書くと

function runtime()

このように色分けされます。


参考リンクの貼り方

①"[" "]"の間にURLを書き、URLの後ろに":title"と追加する
 ※":title"と書くと記事のタイトルを取得し、取得したタイトルのリンクが出来ます
 ※":title=たいとる"と書くと、"たいとる"と書かれたリンクが出来ます

[http://tomo358.hatenablog.com/entry/2014/08/18/203514:title]

と書くと
はじめまして!! - tomo358の日記


以上です!!