久しぶりにも程がある


仕事が変わって
プログラミングに携わることもなくなって
あっという間に知識は忘れる…。

それはそれでもったいないなあと。

休日にちょこちょこiOSの勉強再開してみようかな。
気が向いたら(笑)

そんなこんなで、ブログもちょっとずつ再開。*1

火星に住むつもりかい?

https://instagram.com/p/41vJ7il35v/

画像は自分のInstagramから。

7~8月は全然本読めんかった…。
読んでもPOPまで書けてないし、新学期からまた頑張らんとな(/_;)


さてさて、伊坂幸太郎の最新作!*2

6月くらいにようやく読みました。
やっぱりおもしろかった…!期待を裏切らない!


まずは、タイトルにまんまと騙された(笑)
火星の話でもなんでもなくて
むしろ伊坂作品のダークなほうねって。

前半は人物や場面がころころ入れ替わって
読み進めるのにちょっと時間がかかってしまった。

そこを乗り切ればあとは一気読みでした(笑)


まあ~とにかく「平和警察」が怖い。
でも実際のところ、こういう理不尽なことはたくさんあるな…って
そう思うと余計恐ろしくなった。

そこから、ナイスキャラクターの登場と
見事な伏線回収!伊坂作品の伏線が好きすぎる。

切ないやらハラハラやら目まぐるしかったけど
個人的に最後はすっきりした。
あ…!最後のこの展開は好きなやつ…!ってなった←


最近なんでもかんでも映像化しすぎだなと思うけど
この小説は映像化してほしいな~(笑)
そうなると中村監督ですかな!*3


「あの、正義ってなんでしょう?」

火星に住むつもりかい?

火星に住むつもりかい?

*1:元々全然更新してない

*2:って言うても発売は2月

*3:ゴールデンスランバーは何回でも読みたいし何回でも観たい

ECSlidingViewControllerを使ってみた

iOSアプリで横からスライドさせてメニューを表示する画面を実装したくて「ECSlidingViewController」というライブラリを使って実装してみた(´ω`)

ダウンロードはこちらから
ECSlidingViewController/ECSlidingViewController · GitHub

ECSlidingViewControllerのバージョンについて

インストールした中から「ECSlidingViewController」フォルダをプロジェクト内にコピーして使用します。importするファイルはこれだけ↓

#import "ECSlidingViewController.h"


ECSlidingViewControllerの使い方を検索して実際に実装してみると、これだけimportすればうまくいくはずなんだけど(実装ファイルとか正しく書けば)、なぜか一部分でエラーが表示されてしまう。

例えば

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    // slidingViewControllerとunderLeftViewControllerがエラーになる
    if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) {
        self.slidingViewController.underLeftViewController  = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    }
}

こんな感じで、ECSlidingViewController.hをimportすれば使えるはずのプロパティが使えなかった。おそらくバージョンがあがって影響が出ているのかなと思いながら解決策を調べてみるが載ってない〜(;_;)


で、いろいろ試してみた結果、もう1つファイルを追加することでできました!

#import "ECSlidingViewController.h"
#import "UIViewController+ECSlidingViewController.h"

正しい方法なのか不明だけどエラーが消えたのでよし。

実装してみる

よくあるのは、というかわたしが見つけたのはトップ画面にBarButtonを置いてメニュー表示…みたいな感じのが多かった(´ω`)つくってみるとこんな感じ。

f:id:aki0203:20140830202258p:plain

1. storyboardでUIViewControllerを2つ、UITableViewControllerを1つ配置する
2. ルートになっている最初のViewControllerのカスタムクラスに「ECSlidingViewController」を設定する
(もしくは、ECSlidingViewControllerをサブクラスとした新しいクラスをつくる→後々のAppDelegate.mの実装が不要になる)
3. もう1つのUIViewControllerには「FirstViewController」、UITableViewControllerには「MenuViewController」というクラスを作成して設定する
4. Identity InspecterからStoryboard IDを設定する
FirstViewController→「First」、MenuViewController→「Menu」

それぞれのコード。

AppDelegate.h
#import "ECSlidingViewController.h"
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ECSlidingViewControllerオブジェクトを取得
    ECSlidingViewController *slidingViewController = (ECSlidingViewController *)self.window.rootViewController;
    // ストーリーボードを取得
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    // topViewControllerにFirstViewControllerを指定する
    slidingViewController.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"First"];
    
    return YES;
}
FirstViewController.h
@interface FirstViewController : UIViewController

// メニューボタンをタップしたとき
- (IBAction)menuButtonTapped:(id)sender;

@end
FirstViewController.m
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    // シャドウ
    self.view.layer.shadowOpacity = 0.5f;
    self.view.layer.shadowRadius = 5.0f;
    self.view.layer.shadowColor = [UIColor grayColor].CGColor;

    // ECSlidingViewControllerのunderLeftViewControllerにMenuViewControllerを指定する
    if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) {
        self.slidingViewController.underLeftViewController  = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    }
    [self.view addGestureRecognizer:self.slidingViewController.panGesture];
    [self.slidingViewController setAnchorRightRevealAmount:130.0f];
}

// メニューボタンをタップしたときに呼ばれます
- (IBAction)menuButtonTapped:(id)sender
{
    // スライド
    [self.slidingViewController anchorTopViewToRightAnimated:YES];

    // 以前は anchorTopViewTo:ECRight だったが
    // anchorTopViewToRightAnimated:YES になった(たぶんあってる)
}
MenuViewController.m

Static Cellsを使っているので、TableCellの実装メソッドをすべてコメントアウト

階層が深い場合、実装してみる

ECSlidingViewControllerを使うと、上のように簡単にスライドメニューを実装することができた(*´∀`*)
でも、タブとかNavigationControllerの階層とかがある"中"でメニューを表示したいときはどうしたらいいんやろ(というかそっちのほうが仕事で使うな…)

と思ってやってみた。

ただ、変更点はちょっとだけ(´ω`)

1. ECSlidingViewControllerをサブクラスとしたUIViewControllerを作成する(SubViewControllerとする*1
2. SubViewControllerはルートではなく、2つ目のTabBarControllerに遷移する前に配置する(画像:赤の画面)
3. FirstViewControllerにメニューを表示するための実装をする(画像:青の画面)

f:id:aki0203:20140830222651p:plain

んでここから、実際にメニューのセルを押したときに前のTabの項目に戻りたかったんだけど、これがなかなか苦労した…NavigationControllerが、便利だけど邪魔だった←

それも含めて、この深い階層の場合のはまた別でまとめることにする〜

*1:わかりやすい名前つけられなくてごめんなさい←

はてなブログでシンタックスハイライト

スーパーpre記法を使ったシンタックスハイライトの方法をメモ(=゚ω゚)ノ

>|| ||< ←こいつらでコードを囲む

>||
ここにソースコードを記入
||<

とすると、

こんな感じになりました('ω')

言語を指定する

言語を指定するには、ハイライトさせたいファイルタイプを指定します。

>| javascript |
   ↑こいつの間に書きます('ω')
||<

ちなみに私はC#を指定したかったのですが、省略されている名前が探し出せず…(笑)
大抵は見つけやすい名前なのにな(._.)*1
ファイルタイプはここから↓確認できます。
入力したプログラムコードを色付けするスーパーpre記法 シンタックス・ハイライトの実装について - はてなダイアリー日記

csを指定すると、

class Hoge
{
  public static void Main()
  {
     Console.WriteLine("hoge!");
  }
}

こんな感じで勝手に色づけしてくれます。便利便利!

*1:C#は「cs」で指定できる

攻殻

結構本気で
少佐とタチコマのフィギュア欲しい…

もしくはねんどろいどでも良い。

f:id:aki0203:20130713174050j:plain

タチコマああああああああああああああ(*´`)

タチコマ集めて飾りたいどうしよう。


その前にBDも揃えておきたいどうしよう。
このままじゃ何回もTSUTAYAにお世話にならねばならぬ(笑)
BD3巻とO.S.Tは制覇しました!でも揃えたい!←


Stand alone... Where was life when it had a meaning...
Stand alone... Nothing's real anymore and...

Собой остаться дольше...
ずっと自分であり続けること

MVCパターン②

  • Model…C#のコードだけで記述
  • View…HTMLベースのコードで記述
  • Controller…C#のコードだけで記述
注意すること
  • Viewを表示するときのデータをModelによって準備しておく!

⇒ ModelでDBを準備してViewでは表示するだけ.

  • 必ずControllerを通してModelのデータを変更する!

⇒ ユーザーがViewに対してアクションを起こした時、ViewからModelは操作しないこと.
 (Viewのコードが肥大化してしまうため.(レスポンス遅くなる?)