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
にする。
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]
以上です!!