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

Twitterボタン
Twitterブログパーツ

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


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

[Xcode][objective-c]コードで画面遷移する方法@UIAlertView

カテゴリ:画面遷移
==<<管理者環境>>==
MacOSX ver.10.7.2
Xcode ver.4.2.1
iOSシミュレータ ver.5.0
==============

画面遷移を、Storyboard上でSegueを直接繋ぐのではなく、コードで実装する方法です。
(私のようにStoryboardが導入されたXcode4.2以降にiPhoneアプリ開発デビューした方は、ここでつまづくハズ…)

今回は、UIAlertViewのボタンをタップして画面遷移する方法を紹介します。
(コードで画面遷移する方法については、こちらの記事もご覧ください。コードで画面遷移する方法@UITableView)
▲記事が長いので2つに分割しました(2012/3/1追記


下画像のように、testVC1(TestViewController1クラス)に配置してあるボタンを押してアラートを表示させ、さらにアラートのOKボタンを押すとtestVC2(TestViewController2クラス)に画面遷移する方法を紹介します。

コードで画面遷移1

※注意
遷移ViewControllerをVC1と表記します
遷移ViewControllerをVC2と表記します

手順0 Storyboard上にUIViewControllerを二つ。遷移元画面(画像左)にAlertViewを表示させるためのボタンを配置して置いて下さい。

スクリーンショット 2012-02-24 22.39.08

▼ViewControllerへのクラスの設定も忘れずに(2012/2/29追記
※クラスファイルの作成方法は、コチラの記事(クラスファイルの作成方法)を参照のこと
スクリーンショット 2012-02-29 15.06.38_111


手順1 Storyboardを開き、VC2の「AttributesInspector」の「View Controller」項目にある「Identifier」に任意な名前(他と被らないように)を設定する(今回の例では「testVC2」としました)

コードで画面遷移


手順2 VC1のヘッダファイルにVC2のヘッダファイルをインポートし、「UIAlertViewDelegate」を実装する
#import "TestViewController2.h"
@interface TestViewController1 : UIViewController < UIAlertViewDelegate >

//アラート表示用ボタンのアウトレットも忘れずに
- (IBAction)alertTest;


手順3 VC1のメソッドファイルに、アラート表示と画面遷移をするコードを記述する
//アラート表示
- (IBAction)alertTest{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"画面遷移テスト"
message:@"TestViewController2に\n画面遷移します"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
alert.alertViewStyle = UIAlertViewStyleDefault;
[alert show];

}

//ボタン押下時の処理
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//遷移先ViewControllerクラスのインスタンス生成
TestViewController2 *testVC2 = [self.storyboard instantiateViewControllerWithIdentifier:@"testVC2"];//手順1で付けた名前

switch (buttonIndex) {
case 0://押したボタンがCancelなら何もしない
break;

case 1://押したボタンがOKなら画面遷移
[self presentModalViewController:testVC2 animated:YES ];
break;

}
}


手順3まで出来たら実行してみてください。
うまく表示されましたでしょうか。

コードで画面遷移する方法については、こちらの記事(コードで画面遷移する方法@UITableView)もご覧ください。
関連記事
  1. 2012/02/24(金)|
  2. 画面遷移
  3. | トラックバック:0
  4. | コメント:8
<<[Xcode][objective-c]コードで画面遷移する方法@UITableView | ホーム | [Xcode][objective-c]クラスファイルの作成方法>>

コメント

xcode/iOSのver upのためか、私のxcodeでは、
「View Controller」項目にある「Identifier」が表示されなくなってしまい、解決できずに困っております。
1ヶ月ほど前は、表示されていたはず。
  1. 2012/10/16(火) 18:51:00 |
  2. URL |
  3. rs030012 #-
  4. [ 編集 ]

>rs030012 さん

rs030012さんこんばんは

ブログを見て頂きありがとうございます
貴殿がどのような環境で開発されているかは分かりませんが
当方の環境(Xcode4.5)だと
左ペインの左から3番目「Show the Identity inspector」というインスペクター内の、Identity項目にある「StoryboardID」が以前の「Identifier」かと思います

お試し下さい

============================
[2012/10/17追記]
左ペインではなく右ペインでした。ごめんなさい
  1. 2012/10/17(水) 21:41:12 |
  2. URL |
  3. Casual App Team #-
  4. [ 編集 ]

解決しました

無事、解決できました。
ご丁寧にお教えいただきありがとうございました。
--
X-CODE:Ver4.5.1
iPhone 6.0 Simulator
  1. 2012/10/23(火) 00:22:46 |
  2. URL |
  3. rs030012 #-
  4. [ 編集 ]

ブックマーく機能設置

こんばんは

参考にさせて頂いていますし、
僕みたいな初心者でも、図解が入っているため、
非常に分かりやすく、滞りなく進めます。

アプリもそこそこで審査まで出す事が出来ました。

そこでお忙しい中とは思いますが、
アクションシートを使用して、ブックマーク機能を設置したいと
思っています。

アクションシートまで作る事は出来ましたが、
その後のコードがまったく分かりません。


ぜひコードを教えて頂きたいと思います。
お忙しい中だと思いますが、よろしくお願いします。

現在は(Xcode4.2.1)を使用しています。
  1. 2012/10/31(水) 19:21:15 |
  2. URL |
  3. IDO #-
  4. [ 編集 ]

すいません。質問してもいいでしょうか。
今コードで、
UITableViewからUIViewへ画面遷移をしようとしてるのですが、
できません。

どこかコードが間違ってるかもわかりませんが、
質問できる人がいなくて困ってます;;

教えていただけないでしょうか。
  1. 2012/11/30(金) 14:39:28 |
  2. URL |
  3. june #-
  4. [ 編集 ]

>juneさん

こんばんは
当ブログを見て頂きありがとうございます

画面遷移が出来ない原因が分からないのでコードを貼付けて頂ければと思います。
私で解決出来るか分かりませんが多少なりともお力になれると思います。
  1. 2012/11/30(金) 21:37:58 |
  2. URL |
  3. Casual App Team #-
  4. [ 編集 ]

3つ目のViewController

こんばんは。
プログラミングを始めてまだ3ヶ月弱のド素人です。
基本の基の字を少しずつ飛ばしている気がしながらも、ネットや書籍を手がかりになんとか初めてのアプリ作りを試みていますが、困っていた所にピッタリとくる情報がやっと見つかって非常に助かっています☆

そこで質問なのですが・・・

現在3つ目のViewControllerを作り(FirstViewController, SecoundViewController, ThirdViewController)をそれぞれ新規作成したクラスファイルと関連付けしようとしています。
が、
新規プロジェクトを作成 (Class prefixにより、FirstViewController.h, FirstViewController.m)
   ↓
クラスファイルを追加(SecoundViewController.h , SecoundViewController.m)
   ↓
StoryboardにViewControllerを追加
の手順で作業をすると、Storyborad上FirstViewController及びSecoundViewControllerのIdentity InspectorのCustom Class、Classプルダウンからそれぞれのクラスファイルを選択し、ファイルとビューの関連付けは出来ているのですが、同上の作業でThirdViewControllerを追加しようとするとプルダウンにクラス名(ThirdViewController)が表示されません。

1. ここは手入力でも構わないのでしょうか?
ちなみに手入力で進めてみたのですが、Alertviewのメソッドの中の"遷移先ViewControllerクラスのインスタンス作成"のところで
SecoundViewController *secoundVC = [self.storyboard instantiateViewControllerWithIdentifier:@"secoundVC"];
ThirdViewController *thirdVC = [self.storyboard instantiateViewControllerWithIdentifier:@"thirdVC"];
としたところでやはり太字部分にエラーが出てしまいます。
自分の作業に不具合がありますでしょうか?
何故3つ目のクラスファイルは認識されないのでしょうか?
確実にこれが原因だと思うのが、ThirdViewController.mファイルの1行目;

@interface ThirdViewController : UIViewContoller

UIViewController部分はがついていません!
これは例えばThirdViewControllerファイルをSecoundViewControllerのサブクラスに指定しても同じです。
はつきません!
これはSuperClassを読み込んでないという事ですよね?
故にXcodeがカスタムクラスとして認識しないという事ですか?



2. 最終的な形としては

FirstViewControllerにボタンを2つ配置。
1つをSecoundViewControllerにModal接続。
もう一つをThirdViewControllerにModal接続。

SecoundViewControllerでAlertviewを表示。
左ボタンでFirstViewControllerへ
右ボタンでSecoundViewControllerへ

ThirdViewControllerにボタンを1つ配置。
FirstViewControllerへModal接続。

を目指しています。
この仕様で(上記1のように)管理者様の手法を真似するのはプログラミング的(?Objective-C的に?Xcode的に?)に問題ないでしょうか?(問題あるとすれば他に良い方法はありますか?^^;)

以上、少々長くなりましたが、お時間のある時で結構ですのでお助け下さいm ( - _ - ) m
よろしくお願いします。
  1. 2013/01/18(金) 00:58:43 |
  2. URL |
  3. Kokuen #/HkkbnzE
  4. [ 編集 ]

>Kokuenさん

-----------------------------------------
▼解決策
>UIViewController部分は色がついていません!
恐らくそのファイルはXcodeに認識されていません。

以下URLの画像の様に、BuildPhases > CompileSourcesを開いて、リストにThirdViewController.mが存在するか確認して下さい。

http://blog-imgs-52.fc2.com/h/h/a/hhageru/20130118125520ccf.png

なければXcodeに認識されていないということです。
プラスボタンで追加して下さい(.hではなく.mファイルのみで良いです)。

XcodeのEditorメニューからCleanやBuildをして、StoryboardのViewControllerでカスタムClassの設定リストを開いて下さい。そのリストに載っているハズです。無ければXcodeを再起動してもう一度確認して下さい。
-----------------------------------------


▼以下、頂いたご質問にお答えします
>1. ここは手入力でも構わないのでしょうか?
ダメです。Xcodeに認識されていない以上、直打ちしても効果はないと思います。

>何故3つ目のクラスファイルは認識されないのでしょうか?
私も理由はわかりませんが最近のXcodeでは良くある現象です。

>この仕様で(上記1のように)管理者様の手法を真似するのはプログラミング的(?Objective-C的に?Xcode的に?)に問題ないでしょうか?
貴方の仰る「2. 最終的な形」で何も問題無いと思います。
私の持論ですが、「想定通り動けば良し」です。
とにかく手を動かして試してみる事が大切だと思います。
AppStoreの審査基準に抵触しなければどんなやり方でも良いと思っています。
  1. 2013/01/18(金) 20:05:01 |
  2. URL |
  3. CasualAppTeam #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://blog.casualappteam.com/tb.php/37-be21602c
この記事にトラックバックする(FC2ブログユーザー)

検索フォーム

アプリ紹介記事

おすすめ書籍

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

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リンクの表示

自分のための外部リンク