• 締切済み

iOSアプリ起動時にビューを移す方法

iOSアプリ開発初心者です。 初めてアプリを起動するときに、ビューを"passtest"に移したいのですが、以下のコードを書いたんですが、動作しません。メインコントローラの.mファイル((void)viewDidLoadメソッドの中で)で書きました。 int firstvalue = 1; if (firstvalue==1) { passtest *controller = [[passtest alloc] initWithNibName:@"passtest" bundle:nil]; controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:controller animated:YES]; [controller release]; } IBActionにしてアクションをボタンに割り当てれば、問題なくビューを移せます。 起動時にどうやってビューを移すことができるのでしょうか? iOSアプリに詳しい方がいらっしゃいましたら、ご回答をよろしくお願いします。

みんなの回答

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

> ゼロからiphoneプログラミングを始めますので、まだ基礎しかできません。 そういう段階のひとが、パスワード認証の画面をどうのこうのというのは、ギャップがありすぎませんか? すくなくともView Controllerを使った画面遷移のメカニズムを、実践的に学ぶことを優先して、順々にパスワード認証までステップアップしていくべきではないでしょうか? さきの回答でも書いたように、アプリが起動したとき、View Controllerが呼び出されたとき、アプリがバックグラウンドに回ったとき、Viewが表示されたとき、あるいは非表示になったとき、どういうメソッドが呼び出されるのか、どういうDelegateが発生するのか、Notificationが発信されるのか、そういうイベントで駆動するアプリケーションのふるまい全体を、おおまかでも把握できるように、まずなりましょうよ。そうすれば、ばくぜんとでもどういうプログラムを、どこに仕込んでいけばいいか、イメージができるようになるでしょう。 私ならば、すくなくともパスワードを暗号化してどこかに保存しておくメカニズムをマスターしないと、パスワード認証を組みこもうとは考えません。

2B2B
質問者

お礼

ご回答ありがとうございます。 >そういう段階のひとが、パスワード認証の画面をどうのこうのというのは、ギャップがありすぎませんか? 確かにそうですね。3つのアプリの開発を任されたんですが、上司が急かして一つ目のアプリを早く終えてって。もともとウェブデザインしかしていなかった私は、マック環境に慣れているので「iOS開発を勉強して」と頼まれました。 それで、今海外にいるんですが、日本からiOS開発の本を取り寄せたんですが、まだ届いていないので、インターネットのあちこち情報を収集して勉強しようと思っているんですが、詳しい説明はあまり見つかりません。とにかく基礎をしっかり勉強してパスワード管理のレベルに着いたら、問題がありましたら、またお尋ねさせていただきます。 >私ならば、すくなくともパスワードを暗号化してどこかに保存しておくメカニズムをマスターしないと、パスワード認証を組みこもうとは考えません。 ウェブサイトのデータベース方式でパスワードをハッシュにしてアプリのどこかの安全な場所に保管するだけでいいんじゃないでしょうか? ご迷惑をおかけしますが、またよろしくお願いします。

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

アプリを起動したときに、View ControllerのviewDidLoadメソッドが呼ばれるとは、限らない。そういうことです。 正確にいうと、アプリを起動すれば、View Controllerは生成初期化されるので、かならずviewDidLoadメソッドは呼ばれます。が、iOS 4になって、マルチタスクが導入されてから、アプリが言葉の定義どおりに起動を行うのではなく、ただバックグラウンドに回って、休止しているだけというケースが出てきました。バックグラウンドからアプリが表に出てきたとき、View ControllerのviewDidLoadメソッドは呼ばれません。こういう場合は、viewDidLoadの代わりに、「viewDidAppear:」、「viewWillAppear:」メソッドを使います。 あるビューを開いたとき、自動でほかのビュー(Modal View)が開くというインターフェイスは感心しません。アプリの操作は、ユーザが完全に把握し、支配下にあるという幻想(あるいは錯覚)を、ユーザに与えることが、アプリ開発者のとるべき基本方針です。ユーザが「この画面を開く」という操作を行ったのに、それとは異なる画面が表示されては、ユーザがそのアプリを支配しているという安心感を奪ってしまいます。アプリを使うことに不安を覚えれば、ユーザはそのアプリを嫌うようになり、使わなくなってしまうでしょう。 クラス名は大文字で始めるようにしてください。Objective-Cの命名規則です。その規則に従わなくても、ビルドはできますが、あとからそのコードソースを読む人間が、混乱してしまいます。Objective-Cには、クラスメソッドと、インスタンスメソッドがあり、メソッドの対象が、クラスであるかインスタンスであるかという区別がひじょうに重要です。クラスとインスタンスの区別をあいまいにしていると、プログラムはかんたんに破綻します。 passtest *controller = [[passtest alloc] initWithNibName:@"passtest" bundle:nil]; このコードは、 Passtest *controller = [[Passtest alloc] initWithNibName:@"passtest" bundle:nil]; としてください。

2B2B
質問者

お礼

ご回答ありがとうございます。 いろいろご親切に説明していただいてありがとうございます。 実は、実装したいのはアプリの初めての起動時に「パスワード設定画面」を表示して、次の起動時には、アプリにアクセスするにはそのパスワードを入力しないと行けないという設定です。それはどうやって実装すればよろしいのでしょうか。 ゼロからiphoneプログラミングを始めますので、まだ基礎しかできません。さっき述べた機能についておわかりでしたら、教えていただけませんか。

関連するQ&A