カテゴリー ‘ iPhone

iPhoneアプリのUIButtonでチェックボックスを実装する方法


 

iPhoneアプリのデフォルトのUIではAndroidやHTMLで実現出来るチェックボックスのようなものがありません。

ですので、UIButtonを使用してチェックボックスを作って実現してみました。

用意するもの

  1. チェックボックス用の画像
  2. UIButtonを継承したサブクラスの実装

この2つで実装できます。

まず、画像はAndroidで表示されるチェックボックスの画像を切りだして作成しました。

  

この3つの画像を使用します。

1.UIButtonのサブクラスを作成する

  1. メニューの「File」 →「New」→「File」をクリックして「Choose a template for your new file」を表示します。

  2. 「Next」ボタンを押下して、Class名に「CheckboxButton」Subclass of に「UIButton」を入力して「Next」ボタンを押下する
  3. 「CheckboxButton.h」を編集
    #import <UIKit/UIKit.h>
    
    @interface CheckboxButton : UIButton
    
    @property (nonatomic, assign) BOOL checkBoxSelected;
    
    @end
  4. 「CheckboxButton.m」を編集する
    #import "CheckboxButton.h"
    
    @implementation CheckboxButton
    
    @synthesize checkBoxSelected = _checkBoxSelected;
    
    - (void)awakeFromNib
    {
        [super awakeFromNib];
        UIImage* nocheck = [UIImage imageNamed:@"nocheck.png"];
        UIImage* checked = [UIImage imageNamed:@"check.png"];
        UIImage* disable = [UIImage imageNamed:@"disable_check.png"];
        [self setBackgroundImage:nocheck forState:UIControlStateNormal];
        [self setBackgroundImage:checked forState:UIControlStateSelected];
        [self setBackgroundImage:checked forState:UIControlStateHighlighted];
        [self setBackgroundImage:disable forState:UIControlStateDisabled];
        [self addTarget:self action:@selector(checkboxPush:) forControlEvents:UIControlEventTouchUpInside];
        [self setState:self];
    }
    
    - (id)initWithFrame:(CGRect)frame
    {
        NSLog(@"initWithFrame");
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code
            UIImage* nocheck = [UIImage imageNamed:@"nocheck.png"];
            UIImage* checked = [UIImage imageNamed:@"check.png"];
            UIImage* disable = [UIImage imageNamed:@"disable_check.png"];
            [self setBackgroundImage:nocheck forState:UIControlStateNormal];
            [self setBackgroundImage:checked forState:UIControlStateSelected];
            [self setBackgroundImage:checked forState:UIControlStateHighlighted];
            [self setBackgroundImage:disable forState:UIControlStateDisabled];
            [self addTarget:self action:@selector(checkboxPush:) forControlEvents:UIControlEventTouchUpInside];
            [self setState:self];
        }
        return self;
    }
    
    - (void)checkboxPush:(CheckboxButton*) button {
        button.checkBoxSelected = !button.checkBoxSelected;
        [button setState:button];
    }
    
    - (void)setState:(CheckboxButton*) button
    {
        if (button.checkBoxSelected) {
            [button setSelected:YES];
        } else {
            [button setSelected:NO];
        }
    }
    
    @end

これで、「CheckboxButton」クラスの作成は終了です。

次は、作成した「CheckboxButton」を使用する方法です。

2.「CheckboxButton」の使用方法

  1. Storyboardまたは、nibファイルに「Round Rect Button」を設置する。
  2. 設置したButtonのClass名に「CheckboxButton」を設定する

これだけでチェックボックスが実装できます。

実際に動かしたイメージが以下になります。

チェックボックスOFF時の状態

チェックボックスON時の状態

こんな感じでチェックボックスが実装できます。

「checkBoxSelected」の状態を取得することでチェックがON/OFFなのか判断できます。

iPhoneアプリで画面表示後に、別のViewControllerを呼び出す方法


 

iPhoneアプリで画面起動後に、別のViewContollerを表示させたい場合の備忘録

結論:viewDidAppearで処理を行う。

「viewWillAppear」、「viewDidLoad」で処理を行った場合、別のViewControllerが表示されませんでした。

「viewDidAppear」ここで処理を記述した場合にのみ、ちゃんと画面が表示されました。

iPhoneアプリの実機テストの備忘録


 

iPhoneの実機転送の設定の個人的な備忘録

久しぶりにやったら、また色々なページを検索してやったることになったので、ど忘れした時の為の備忘録

 1.Provisioning Portalにログインする

Provisioning Portal」にアクセスしてログインする。

すると、以下のようなページが表示される。

2.証明書を作成する

  1. キーチェーンアクセスを起動する
  2. メニューの「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」を選択して証明書アシスタントを開く
  3. ユーザーのメールアドレス、通称にメールアドレスと名前をそれぞれ入力する。
  4. 要求の処理、「ディスクに保存」を選択する
  5. 続けるを押下して作成されたファイルを保存する(CertificateSigningRequest.certSigningRequest)

3.Certificateを開いて証明書をアップロードする

  1. 「Request Certificate」を押下する

  1. ファイル選択ボタンを押下して、2.で作成した「CertificateSigningRequest.certSigningRequest」を選択し、Submitボタンを押下する

  1. 「Certificates」の画面に戻り登録された不ファイルが一覧で表示されるので、対象の証明書の右側にある「Download」ボタンを押下して、cerファイルをダウンロードする。「Download」でなく「Pending Issuance」表示されている場合は何度かリロードしてください。

  1. 下に表示されている「*If you do not have the WWDR intermediate certificate installed, click here to download now.」のリンクから「AppleWWDRCA.cer」ファイルをダウンロードする。

4.cerファイルをキーチェーンアクセスに登録する

  1. キーチェーンアクセスを起動して「ログイン」が選択されている事を確認する
  2. 3.でダウンロードした2つのcerファイルをドラッグアンドドロップして登録する。

5.Deviceを登録する

  1. Xcodeを開いてメニューの「Window」→「Organizer」を選択してオーガナイザーを起動する。
  2. 対象のiPhone端末を2本指でクリックし「Copy Device Identifier」を選び対象端末のIdentifierをクリップボードにコピーする
  3. Provisioniing Portalの「Devices」を開いて「Add Devices」を押下する

  1. 「Device Name」「Device ID」を入力する「Device ID」は、2.でコピーした内容を貼り付けsubmitボタンを押下する

6.App IDsを登録する

  1. Provisioning PortalのApp IDsを選択する

  1. 「New App ID」ボタンを押下する
  2. 「Description」「Bundle Seed ID」「Bundle Identifier」を入力し「submit」ボタンを押下する。

7.Provisioningの登録

  1. Provisioning PortalのProvisioningを押下する
  2. 「New Profile」を選択する

  1. 「Profile Name」「Certificates」「App ID」「Devices」を入力する。
    • Profile Name:分かりやすい名前を入力
    • Certificates:対象のCertificatesを選択する
    • App ID:6.で作成したApp IDを選択する
    • Devices:使用したいデバイスを選択する

  1. 一覧が表示されるので「Download」ボタンからmobileprovisionファイルをダウンロードする
  2. オーガナイザーのProvisiong Profileにダウンロードした「mobileprovision」を登録する

これで、実機に転送できるようになります。

return top