blogtitle
RSS Twitter
  • TOP
  • このブログについて
  • imotenもくじ
  • VPS拡張編
    • VPS機能拡張
    • セキュリティ対策
    • WordPress設定
  • ブログ主おすすめ
    • おすすめアプリ
    • おすすめ周辺機器
    • Xcode
    • ターミナルサービス設定
  • レシピ(料理)

【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ5【『初めてのiOSアプリケーション』その3】

Day:2013.2.3 0:05 Comments: 10

code iPhone Mac Xcode

Xcode


さて、今回からはボタンを押したときの処理(メソッド)『changeGreeting:』をHelloWorldに実装していきます。

凄く短いプログラムだけど、大いに頭を混乱させてくれます。

プログラマの人にはあれ?変じゃね?ってところもあるとは思うけど、ド素人が書いてるので変なところがあったら突っ込んでください。


【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ4【『初めてのiOSアプリケーション』その2】 | くずのは探偵事務所


プロパティを追加する(プロパティ宣言)


テキストフィールドに記入された文字列を入れるプロパティ(入れ物)を作成する。

Project NavigatorにあるViewController.hをクリック。


skitchphkNXL



@property (weak, nonatomic) IBOutlet UILabel *label;の下に、

@property (copy, nonatomic) NSString *userName;

と書き足す。

NSStringは、文字列を扱いますよ、という意味になる。


skitchwBs177



これでテキストフィールドに記入された名前を格納するプロパティ『userName』が作成された。



ViewController.hとViewController.mの違い


ViewController.hの拡張子、.hはヘッダー(header)のh。

ヘッダーではボタン等でのアクション情報や、各プログラムに処理結果を渡したり受け取ったりと、管理者のような働きをする。

会社でいうと役員。


ViewController.mの拡張子、.mは・・・なんの略なんだろう?メソッド?w

ViewController.hから引き渡された数字などの情報を元にViewController.m内で処理を行って再びViewController.hへ返す。

会社でいうと実務を行う従業員。



@synthesize


@synthesizeを記述する。

@property(プロパティ宣言)で作成された入れ物『userName』に処理結果を格納するために記述する。

Project NavigatorにあるViewController.mをクリック。


skitchZeTT89



頭がくらっとくるような奇っ怪なコードが書かれている画面が出てくる。


skitch6DOBaw


が、とりあえずこれをすべて理解しようと思わなくていい。

Xcodeが自動生成してくれたんだから気にしない。

深く考えない。

自分で書かなくて済んだ(゚∀゚)!

とポジティブに考えよう。


とりあえず、先ほど宣言したプロパティ『userName』をViewController.mでも使えるようにViewController.hから引っ張り出してくる。

@implementation ViewControllerの下に、

@synthesize userName = _userName;

と入力する。


skitch6NTqFO



これでViewController.hのプロパティ『userName』に数値や文字列を格納できるようになった。

なぜこう書くのかはいずれ書くと思うけど、今はプロパティに値を格納するにはこう書くんだと覚えればいい。

深く考えるとブログ主のように何日も悩んだ挙げ句たいして理解も出来ないという泥沼にはまる。



『changeGreeting:』をViewController.mに実装


さて、今回の最大の山場にして、HelloWorldの主要機能、『changeGreeting:』メソッドをViewController.mに実装していきます。


ViewController.mの下の方に、

- (IBAction)changeGreeting:(id)sender {

というコードがあるので、その下にコードを書いていく。

この- (IBAction)〜は、前回ViewController.hにボタンのアクション接続の設定をしたが、それをすると自動でViewController.mに書き込んでくれる。

アクション接続の内容はここに書き込んでね!とXcodeが教えてくれてるって事。

便利だね。


skitchEMMqmM



そこに下記コードを記入する。


self.userName = self.textField.text;
NSString *nameString = self.userName;
if ([nameString length] == 0) {
nameString = @"World";
}
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
self.label.text = greeting;


skitch9eMpz6



なんだこりゃ。

何が何だかわかんね。

ってなるけど、1行ずつ書いている内容を説明するので、おぼろげながらでもいいので理解していこう。



self.userName = self.textField.text;


この行は、テキストフィールドに入力された文字列を先ほどプロパティ宣言で作った入れ物『userName』に格納する(代入)、という意味。

『self.プロパティ』と記述することで、直接プロパティからデータを引っ張り出したり格納できる。

ブログラムでは何でもそうなんだけど、=はイコールという意味では使われない。

A=Bで、AにBを代入する、という意味になる。

そういうもんだと思って覚えてほしい。

ちなみにイコールとして使う場合は==と2つ並べる。



NSString *nameString = self.userName;


ここの行では、文字列(NSString)を格納する入れ物『nameString』を作り、プロパティ『userName』の内容を代入している。

重役用書類を勝手に書き換えるとまずいので、コピーしとこうっていう感じ。



if ([nameString length] == 0) {
nameString = @"World";
}


出てきました。

if文です。

プログラム初心者の味方。

そしてプログラムの基本でもあります。

『もし〜なら〜をする。違うなら〜をする。』

という感じで使う。

しかし、これに頼りすぎるとトーシロ扱いされるというなかなの理不尽さも備えてます。


さて1行目、


if ([nameString length] == 0) {


これは、もしnameStringの中身の文字数(length)が0文字の場合、以下の処理を行う。

という意味。

nameStringはさっきuserNameを代入したものだから、テキストフィールドに何も入力されていない場合、って事だね。


2行目、


nameString = @"World";


これは、nameStringにWorldという文字を代入する、という意味。

Objective-Cでは画面にテキストを出力する場合、@”出力したいテキスト”という風に書く。

これは決まり事なので、そういうもんだと思って覚えてください。


if文全体で、もしテキストフィールドに何も入力されていなかった場合、『nameString』にWorldというテキストを代入しなさい。っていう意味になる。



NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];


ちょっと長めだね。

『greeting』という文字列を入れる入れ物を作り、それにHelloと『nameString』の中に入っているテキストをくっつけて(initWithFormat)、『greeting』に代入しなさい、という意味になる。

[NSString alloc]の意味は、今回、initWithFormat:によって作られる文字数がわからない。

ユーザー名は人によって違うからね。

だけど、文字を画面に表示するときは、表示用に領域(メモリ)を確保しなきゃならない。

テーブルに料理を並べるように。

allocは文字数にあわせた領域を自動で確保してくれる優れもの。

お客さんの人数によって最適なテーブルの大きさを選んでくれる優れたホールの人って感じ。


%@は、NSString型の入れ物に入れられた文字を表示するっていう意味。

なので、テキストフィールドにkyoji kuzunohaと入れると、Hello,kyoji kuzunoha!と返す、って事になるね。

テキストフィールドに何も表示されていないと、Hello,World!と返す。



self.label.text = greeting;


これは前回アウトレット接続したlabelに『greeting』の中身を引き渡して画面に表示させる、という処理になる。


一見チンプンカンプンでも、分けてみてみると何となく意味がわかるでしょ?



シミュレータで確認してみよう


シミュレータを起動してみよう。

Helloボタンをクリックすると・・・


skitchyOUDVf



おおっ!ちゃんと動いてる!!

テキストフィールドには何も入力されてないからWorldが返されてるね。


skitchlPcLae



だけど、テキストフィールドのキーボードは相変わらず閉じない。


skitchC3dsf8



次回はデリゲートのコードを記述


というわけで、次回はキーボードのDoneを押したらちゃんと閉じるように設定してみよう。

って、誰か見てるのかなこの記事。


関連記事


    • 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ4【『初めてのiOSアプリケーション』その2】
    • 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ7【四則演算計算機を作る その1】
    • 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ9【四則演算計算機を作る その3】
    • 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ6【『初めてのiOSアプリケーション』その4】
    • 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ3【『初めてのiOSアプリケーション』その1】


« 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ6【『初めてのiOSアプリケーション』その4】 【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ4【『初めてのiOSアプリケーション』その2】 »



Comments: 10

  1. bavarotti1981 より:
    2013年2月3日 5:46 AM

    今日もお疲れさまです。
    すみません。もう頭の中●▲■★#$%&です(汗)
    初日から読み直し中です(汗)

    返信
    • 葛葉 キョウジ(管理人) より:
      2013年2月3日 12:35 PM

      ありゃw
      やっぱりわかりにくいですかね(;´Д`)

      返信
  2. Akira より:
    2013年7月22日 4:57 PM

    とても参考になります。

    返信
    • 葛葉 キョウジ(管理人) より:
      2013年7月22日 10:20 PM

      ありがとうございますヽ(´ー`)ノ

      返信
  3. kazuki より:
    2013年8月4日 3:07 PM

    1つ1つ説明してくださっているのでとてもわかりやすいです

    返信
  4. kazuki より:
    2013年8月4日 3:08 PM

    (^0^)/

    返信
  5.   より:
    2014年1月7日 5:00 PM

    @synthesize userName = _userName;
    あたりからエラーが出るなぁ
    延々とuserNameが全部エラー
    バージョンが違うとなおさらよくわからないや

    返信
    • 葛葉 キョウジ(管理人) より:
      2014年1月8日 12:02 AM

      バージョン違っても変わらないですよ。
      初めてのiOSアプリケーションのドキュメントを見て違うところがないか確認してください。

      返信
  6. ゆ より:
    2014年1月31日 6:31 PM

    とてもわかりやすいです!

    返信
    • 葛葉 キョウジ(管理人) より:
      2014年2月1日 1:57 AM

      自分もあまり理解してない頃に書いた記事なので稚拙なことこの上ないですが、
      喜んで貰えて何よりです。

      返信
返信をキャンセルする。

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  • お知らせ


    毎週日曜25時から25時30分までは定期サーバーメンテナンスタイムです。
    サーバーの再起動やアップデートを行いますので、ブログに接続出来なくなる場合があります。

  • About

    kyoji_kuzunoha HN:葛葉キョウジ
    Apple信者です。
    iPhoneを使いたくてSoftBankにMNPしたら、電波がクソ過ぎてトランシーバー並みに使えなかったので、なんとかdocomo回線で使おうと研究した結果、SIMフリーiPhoneにたどり着く。
    でも、docomoメールが使えないので色々調べたらimotenという神サーバーソフトがあることを知り、VPSと出会う。
    imotenのために仕方なく借りたVPSを色々いじっているうちにのめり込み、チューニングしまくってAirVideoサーバー、WebDAVサーバー、ミュージックストリーミングサーバーにセットアップして超快適な環境に。
    設定方法などを自分のメモとして書きためつつ、現在はXcodeを勉強中。
    ゲーム、ガジェット、料理が大好きな30オーバーのオッサンです。
    毎日ブログ更新してます。(日曜は休み)
  • 最近のコメント

    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 匿名 より
    • いい蕎麦屋。悪い蕎麦屋。 に どすこい より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 山野邊弘次 より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 山野邊弘次 より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 山野邊弘次 より
    • いい蕎麦屋。悪い蕎麦屋。 に やまがた より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に たけ より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 葛葉 キョウジ(管理人) より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 匿名 より
    • 【白黒】iPhoneの画面の色が反転してしまった時の対処法【ネガ】 に 匿名 より
  • 最近の投稿

    • 【内臓保護】酒量を思い切り減らしてみた【アル中予防】
    • 毎日豆乳を飲んでみた【1ヶ月目】
    • MacBookに対応しているMoshiのUSB-C充電ケーブルを買ってみた
    • MacBookにインストールしたアプリ
    • MacBook2016の使用感その1
    • 【Mac】ことえりのライブ変換を使ってみた【El Capitan】
    • ジャストシステムのポータブルバッテリーを買ってみた
    • 【MacBook】iPhoneのテザリングについて
    • MacBook2016とアクセサリを購入してみた
    • iPhone6PlusからiPhone6sに乗り換えてしばらく経った現在の使用感
  • 人気記事

    • 【imoten】SIMフリーiPhoneで、iモードメール@docomo.ne.jpを使ってみた。設定編【yahoo!版】 481 comments
    • 【Gmail】CentOS6.x(64bit)でimotenを設定して@docomo.ne.jpメールを使う【主にさくらインターネット編】 268 comments
    • imotenQ&A 184 comments
    • 【DTI】SIMフリーiPhoneでdocomo.ne.jpメールを送受信する方法【outlook.com編】 130 comments
    • 【Gmail】CentOS5.x(32bit)でimotenを設定して@docomo.ne.jpメールを使う【主にDTI編】 126 comments
    • 【iPhone】imotenの送信メールをSSLで暗号化する【docomoメール】 112 comments
    • 【MyCloud】さくらVPSをAirVideoサーバーにする【ストリーミング】 99 comments
    • docomo版iPhone5s(5c)用SIMについてちょこっと考察してみた 99 comments
    • 【imoten】SIMフリーiPhoneで、iモードメール@docomo.ne.jpを使ってみた。設定編【Gmail編】 97 comments
    • SPモードメールをiPhoneでプッシュさせる【docomo.ne.jp】 97 comments
  • アーカイブ

  • カテゴリー

    • amazon
    • android
    • Apple
      • AppStore
      • iPad
      • iPhone
      • Mac
    • AppleWatch
    • blog
      • WordPress
      • 移転作業ログ
    • code
    • docomo
    • Game
      • 100万人の信長の野望
      • 3DS・DS
      • PCgame
      • PlayStation
      • XBOX360
    • MVNO
    • News
    • SIM
    • VPS
      • imoten
        • DTI
        • imoten機能拡張
        • さくらVPS
        • はじめに
      • セキュリティ対策
      • 機能拡張
    • Windows
      • ターミナルサービス
    • Xcode
    • おすすめアプリ
    • おすすめ周辺機器
    • もっと評価されるべき
    • グルメ
      • レシピ
    • リモートデスクトップ
    • レビュー
    • 健康
      • ダイエット
      • ランニング
    • 動画
      • TAS
      • スーパープレイ
    • 周辺機器
    • 学習
      • 英語
    • 未分類
    • 雑談
  • カウンタ


    全体:11319615

    今日:1897

    昨日:1996

Copyright © くずのは探偵事務所,All right reserved.