FC2ブログ

Storyboardから始めるiPhoneアプリ開発

Twitterボタン
Twitterブログパーツ

Xcodeやobjective-c、Storyboardについて得た知識などiPhoneアプリ開発の体験記を配信

カテゴリ:Xcode / objective-c の記事一覧

≪新しい記事一覧へ | | 古い記事一覧へ≫


草刈りパニック 海軍王アカデミー シンプルゆめ日記 シンプル表計算CelLion 魔球スラッガー 地頭を鍛えるでんしゃ算数 Don't 100
2012/04/02(月)

[Xcode][objective-c]メソッドが多すぎてどこにあるか分からなくなったときの整理方法

カテゴリ:Xcode / objective-c
==<<管理者環境>>==
MacOSX ver.10.7.3
Xcode ver.4.2.1
==============

売れるiPhoneアプリを作ろうと頑張って開発途中、メソッドをいっぱい作りすぎてカオスになっていませんか?
そんなとき、メソッドをカテゴリ別に整理する方法を紹介。

Xcodeで新規プロジェクトを作成するとき「Single View Application」を選択したときのViewController.mはこんな感じ。
#import "ViewController.h"

@implementation ViewController

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end


私のようなiPhoneアプリ開発初心者にとってはすでにカオス(笑)
Xcodeのここ↓をクリックするとメソッドなどの一覧を表示出来ます。
スクリーンショット 2012-04-01 21.31.39

スクリーンショット 2012-04-01 21.31.56


この一覧をカテゴリごとに整理しようというのが今回のテーマです。

簡単です。このコードを追加するだけ。
#pragma mark - カテゴリ名


試しにコードを追加してみました。(追加位置は適当です)
#import "ViewController.h"

@implementation ViewController

//--------------------------------
#pragma mark - メソッドカテゴリ1
//--------------------------------
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

//--------------------------------
#pragma mark - メソッドカテゴリ2
//--------------------------------
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}

//--------------------------------
#pragma mark - メソッドカテゴリ3
//--------------------------------
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end



メソッド一覧はこんな感じになります。
スクリーンショット 2012-04-01 22.11.20

ちょっとは見やすくなったでしょうか。
  1. 2012/04/02(月)|
  2. Xcode / objective-c
  3. | トラックバック:0
  4. | コメント:0
2012/04/01(日)

[AppStore審査]Xcodeからバイナリーをアップロードするときにアーカイブコマンド(Archive)が表示されない時の対処方法

カテゴリ:Xcode / objective-c
==<<管理者環境>>==
MacOSX ver.10.7.3
Xcode ver.4.2.1
==============

iPhoneアプリをAppStoreで審査してもらう為には、Xcodeからバイナリー(プロジェクトファイル)をアップロードする必要があります。

現行バージョンのXcodeでは、Product >> Archiveコマンドで行うのですが、下画像のようにアーカイブコマンド(Archive)がグレーになり選択できない状態の場合があります。

スクリーンショット 2012-03-31 14.07.15


原因は、「実機テストをしていないから」です。
厳密に言うと、「1度も実機転送していないから」です。

1度実機転送すれば、アーカイブコマンド(Archive)を選択できるようになります。

ちょっとしたアップデートの時に、シミュレータだけで動作確認した場合は注意が必要ですね。


[2012/4/8追記]
実機テストをした後でも、シミュレータで実行をしてしまうと同じ現象になるようです。
なので、厳密に言うと「最後に実行した環境が実機ではないから」ですね。
もう一度、実機で実行すれば、アーカイブコマンド(Archive)を選択できるようになります。
  1. 2012/04/01(日)|
  2. Xcode / objective-c
  3. | トラックバック:0
  4. | コメント:0
2012/03/27(火)

[Xcode]Version editorを選択してStoryboard画面がコード表記になってしまったときの直し方

カテゴリ:Xcode / objective-c
==<<管理者環境>>==
MacOSX ver.10.7.3
Xcode ver.4.2.1
==============

症状

XcodeのStoryboardを編集中に、[Editor]で[Show the Version editor](画像上)を選択すると、今までViewControllerやLabelが表示された画面がコードだらけの画面(画像下)になり、元に戻らなくなります。

スクリーンショット 2012-03-26 1.07.15

スクリーンショット 2012-03-26 1.07.25

対処方法

  1. [Standard editor]を選択する
    スクリーンショット 2012-03-26 1.08.19

  2. 複数タブを使っている場合、Storyboardを選択状態にする
    スクリーンショット 2012-03-26 1.27.34

  3. Xcodeメニュー >> File >> Close "MainStoryboard.storyboard"(自分で設定したStoryboardのファイル名) をクリック
    スクリーンショット 2012-03-26 1.07.56

  4. Storyboardを開き直す
    スクリーンショット 2012-03-26 1.12.53

以上の操作で元通りになると思います。
  1. 2012/03/27(火)|
  2. Xcode / objective-c
  3. | トラックバック:0
  4. | コメント:0
2012/03/25(日)

[Xcode]iPhoneアプリ内の文字と画像を多言語化(ローカライズ)する方法

カテゴリ:Xcode / objective-c
==<<管理者環境>>==
MacOSX ver.10.7.3
Xcode ver.4.2.1
==============

iPhoneアプリを日本以外の地域で販売する場合、その土地に合わせたローカライズが必要不可欠です。
つまり日本語表記の部分を英語などに変えたりする必要があるということです。

Xcodeには簡単にローカライズする仕組みが存在します。

本記事では、文字と画像をローカライズする方法を紹介します。

文字のローカライズ

まず、「文字」のローカライズですが、コチラのサイトで詳しく説明されています。
少し補足だけしておきます。
    <<補足>>
  1. ターミナルの開き方
    アプリケーション >> ユーティリティ >> ターミナル
    スクリーンショット 2012-03-23 15.27.41

  2. ディレクトリ(フォルダ)の移動方法
    「/Users/[ユーザ名]/iPhoneApp/TestProject/」に移動したい場合は以下のコマンドを打つ。
    cd /Users/[ユーザ名]/iPhoneApp/TestProject/

  3. ローカライズのテスト方法
    以下を辿って、日本語 <==> 英語 を切り替える。
    設定アプリ >> 一般 >> 言語環境 >> 言語

画像のローカライズ

続いて画像のローカライズですが、上記サイトにはその情報がないので、本記事で詳解します。
<注意>
仕組みとしては文字のローカライズとなんら変わらないので、上記で紹介したサイトの内容を把握していることを前提として話を進めます。


まず始めに承知頂きたいことがありあす。
それは、画像のローカライズは「日本語画像を英語画像に自動で変換してくれる」わけではないということです。

つまり、「日本語用の画像」「英語用の画像」は自分で用意しなければならないということです。
その上で、ファイル名を元に日本語用の画像を表示するか英語用の画像を表示するのかを自動で判断してくれるっていうだけです。

完成イメージはこんな感じ。
111_20120323165018.png
※使用している画像は以下。
img_jp.png
img_en.png

では、手順です。
手順0(準備)
  1. 日本語用、英語用それぞれの画像を用意し、Xcodeに追加しておく。
    ※画像ファイル名は、[img_jp.png]と[img_en.png]とする。
    スクリーンショット 2012-03-23 15.54.32

  2. StoryboardのViewController上に画像表示用のUIImageViewを配置し、[imv_Title]でOutlet宣言と紐付けをしておく。
    スクリーンショット 2012-03-23 15.58.42

手順1 [Localizable.strings]ファイルを作成して、Xocdeに追加、Localizationに日本語を追加する。

手順2 [Localizable.strings (English)]と[Localizable.strings (Japanese)]ファイルのコードを以下の様に書き換える。

手順3 メソッドファイルに画像をセットするコードを実装する。


以上です。
言語環境設定の変更&プロジェクトの実行でテストしてみて下さい。
完成イメージのようになればOKです。

これで、iPhoneアプリ内をまるごとローカライズ出来ますね。

データベースを使っている場合も、それぞれの言語のテーブルなどを持っておけばローカライズできそうです。もちろんその分容量は増えてしまいますが…
  1. 2012/03/25(日)|
  2. Xcode / objective-c
  3. | トラックバック:0
  4. | コメント:0
2012/03/20(火)

[Xcode][objective-c]UIScrollViewとUIPageControlを組み合わせてスワイプでページを切り替える方法

カテゴリ:Xcode / objective-c
==<<管理者環境>>==
MacOSX ver.10.7.3
Xcode ver.4.2.1
==============

以前、似たような記事を書きましたが、UIScrollViewのみを使ってページを切り替えるという方法でした。
[注意]前回記事の内容に追加実装する形式で紹介するので、まだご覧になっていない方は前回記事(UIScrollViewを使ってスワイプでページを切り替える方法)からご覧下さい。


今回は、UIPageControlと組み合わせて使用する方法を紹介します。
完成イメージはこんな感じです。
no1.png
画面下に[・・・]←こんな感じでPageControlが見えますね。


さてでは手順です。
手順1 UIScrollViewDelegateを実装する
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIScrollViewDelegate>
@end


手順2 UIPageControlのOutlet宣言をする
#import "ViewController.h"
@implementation ViewController
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIPageControl *pageControl;
}


手順3 UIPageControlをViewに追加するコードを実装する
※これをやらないとStoryboard上でUIPageControlを乗っけても実行すると表示されない
- (void)viewDidLoad {
//↓ここから前回の記事で実装済↓
NSUInteger i;
//(中略)
[self layoutScrollImages];
//↑ここまで前回の記事で実装済↑

[self.view addSubview:pageControl];//←この1行を追加する
}


手順4 「ページスクロールした時にPageControlも併せて表示を切り替える」メソッドを実装する
※丸々コピペでOK
- (void)scrollViewDidScroll:(UIScrollView *)sender {  
CGFloat pageWidth = scrollView.frame.size.width;
if (fmod(scrollView.contentOffset.x , pageWidth) == 0.0) {
pageControl.currentPage = scrollView.contentOffset.x / pageWidth;
}
}
※コードはここまで。実装出来たら一度Build([Command]+[B])しておく。

手順5 Storyboardを開き、UIScrollView上にUIPageControlをドロップする

no2.png

手順6 手順2でOutlet宣言したpageControlをUIPageControlと紐付ける。

no5.png

手順7 UIPageControlの設定をする

no4.png
  • # of Pages : スクロールの総ページ数
  • Current : ViewControllerが表示され時に[・・・]←これの最初に白く表示される位置。一番左を白くしたかったら「0」一番右だったら「2」にする

手順8 UIScrollViewのdelegateをViewControllerに紐付ける
※コード上で、scrollView.delegate = self;としている場合、この手順は不要。

no6.png

手順9 UIScrollViewの「スクロール表示(下画像の青枠)」設定を非表示に変更する

no3.png
※赤枠内の2つのチェックボックスのチェックが外れていればOK


以上です。Runしてみてください。
ちゃんと表示されましたでしょうか。

やっぱりこのUIPageControlがあるとページ感があって良いですよね♪

開発をしていて、Storyboardの作業画面が狭いなとお思いでしたらコチラの記事(Xcode内でタブを使い作業画面を広くする方法)をご覧下さい
  1. 2012/03/20(火)|
  2. Xcode / objective-c
  3. | トラックバック:0
  4. | コメント:0
前のページ 次のページ

検索フォーム

アプリ紹介記事

おすすめ書籍

入門者向けおすすめサービス

iPhoneアプリ開発やリリースに必須と思われるサービスです。開発と並行してリリースの環境を整える必要があります。

    シティバンク
    アプリから得られる収入やアプリ製作関連の支出を管理する口座が必要です。アプリから得られる収入は日本円だけではなく米ドル等の外貨の場合がありますので、グローバルで貨幣の両替が簡易な銀行口座を選択します。一旦はここで無難です。

    FC2ブログ
    アプリをリリースする際、サポートサイトが必須です。無料で使い勝手の良いFC2ブログがおすすめです。

    リンクシェア
    アプリの下によくある広告のあれです。ここと提携してアプリ内に広告を設置することで、広告収入を得ることができます。少しでも下心があるなら必須です。

    三井住友VISAカード
    デベロッパー登録やその他経費をクレジット払いにしておけば支払いの履歴も残りますし、一々振り込む手間が省けます。三井住友VISAカードならcitiバンクを支払い口座に指定できますし、なにかと便利です。

中級者向けおすすめサービス

iPhoneアプリをリリースしても、ダウンロードされなければ意味がありません。さらに集客力・発信力を向上させましょう。

    お名前.com
    格安で独自ドメインを取得することができます。自社サイト・個人サイトを作成する際にご利用ください。

    さくらのレンタルサーバ
    レンタルサーバーです。webサイト用もしくはアプリのデーターサーバー用にどうぞ。

    ロリポップ!レンタルサーバー
    レンタルサーバーです。webサイト用もしくはアプリのデーターサーバー用にどうぞ。

その他のおすすめサービス

私のオススメのサービスです。
参考なれば幸いです。


1位   リクナビNEXT

iPhoneアプリエンジニアは求人市場で需要があります。一般企業はアプリを広告として使うケースがありますから。私自身もリクナビNEXTを利用しています。


2位   随時更新していきます。

QRコード

QR

全記事表示リンク

全ての記事を表示する

カテゴリ

最新記事

月別アーカイブ

プロフィール

CasualAppTeam

Author:CasualAppTeam
初めまして。
iPhoneアプリ開発についてブログを綴っていきます。
xcodeやobjective-c,storyboardなどについて詳しく書いていきます。

最新コメント

最新トラックバック

RSSリンクの表示

自分のための外部リンク