1

.NETからObjective-Cに移行するときに、コントロールとイベント処理の基本を学んでいます。

ARCとストーリーボードを使用して、XCode4.2でシングルビュープロジェクトを作成しました。ストーリーボードでは、ViewControllerに単一のUIImageViewとUIButtonがあります。UIImageViewには、IdentityInspectorの「label」エントリで「imgLock」という名前が割り当てられます。同じ手法を使用して、ボタンに「btnToggle」という名前を付けます。

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
  IBOutlet UIButton *btnToggle;
  IBOutlet UIImageView *imgLock;
}

- (IBAction) toggleImage;

@property (readonly, strong) UIButton *btnToggle;
@property (readwrite, strong) UIImageView *imgLock;
@end

ViewController.m

#import "ViewController.h"

@implementation ViewController
@synthesize btnToggle, imgLock;

BOOL imgState;

- (void) toggleImage {
    UIImage *img = [UIImage imageNamed: imgState ? @"Unlocked64" : @"Locked64"];
    imgState = !imgState;
    [imgLock setImage: img];
}

ストーリーボードで、ボタンから画像に青い線をCtrlキーを押しながらドラッグし、表示されるtoggleImageコンテキストメニューから選択しました。

ブレークポイントを設定しtoggleImageてプロジェクトをビルド/実行すると、imgLock0x0を除いて、すべてが正常であることがわかります。私のWindowsの時代から、コントロールがそのまま「フォームに配置」されていたため、コントロールがインスタンス化されることを期待していたと思います。

プロセスを強制終了するときの警告を除いて、ログにはコメントがありません。警告:関数「void」の「/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-i​​nferior.c」の2184行目のエラーmacosx_kill_inferior_safe() "

4

1 に答える 1

2

ストーリーボードで、ボタンから画像に青い線をCtrlキーを押しながらドラッグし、表示されるコンテキストメニューからtoggleImageを選択しました。

ここで何をしたかは完全にはわかりませんが、ViewControllerオブジェクトと各ボタンおよび画像の間でその線をドラッグする必要があります。「control」を押しながら、View Controllerを表すアイコンからボタンにドラッグして、を選択しますbtnToggle。もう一度「control」を押したまま、View Controllerから画像にドラッグし、今度はを選択しますimgLock

次に、ボタンがターゲットとアクションに接続されていることを確認する必要があります。アクションは、ボタンがタップされたときに送信されるメッセージであり、ターゲットは、そのアクションメッセージが送信されるオブジェクトを示します。これらを設定するには、ボタンからView Controllerにcontrolキーを押しながらドラッグします(View Controllerをターゲットにするため)。toggleImage:ポップアップ表示されるリストからメソッドを選択して、アクションとして選択します。

私のWindowsの時代から、コントロールがそのまま「フォームに配置」されていたため、コントロールがインスタンス化されることを期待していたと思います。

基本的に、ストーリーボードで作成するときにインスタンス化します。.xibファイルと同様に、ストーリーボードファイルにはシリアル化されたオブジェクトが含まれています。ビューコントローラとそれに関連するビューをストーリーボードからロードすると、それらのオブジェクトは「逆シリアル化」されて、使用できるオブジェクトに戻されます。ビューコントローラのアウトレットは、ストーリーボード内の他のオブジェクトへの参照です。これらの参照はオブジェクトとともに作成されますが、ストーリーボードでそれらを接続する必要があります。

于 2012-03-05T07:54:47.797 に答える