0

私は2つのView Controllerとペン先を持っています。1 つのビュー コントローラーにトグル スイッチを設定し、ヘッダー ファイルでこれを宣言しました。

@public UISwitch *toggleSwitch;

次のようなプロパティとして公開します。

@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;

スイッチもtoggleSwitchコンセントに繋ぎました。このフィールドを他のView Controllerで使用したいのですtoggleSwitchが、どうすればよいですか? @publicフィールド宣言で使用するだけでは十分ではありませんか? 助けてください。ありがとうございました。

4

2 に答える 2

0

全く問題無い。次のようにスイッチを使用するだけです。

vcWhereYouDeclaredTheSwitch.toggleSwitch.on = YES;

また

BOOL test = [vcWhereYouDeclaredTheSwitch.toggleSwitch isOn];

他のView Controller内。

プロパティに関する一般的な考え方を次に示します。

  • メモリ管理: 舞台裏で、正しい メモリ管理で変数を作成するセッターを作成します。メモリ管理がどのように行われるか ( strong/weakおよびretain/ copy/ )を簡単に確認できるため、頭を悩ませることがなくなりますassign

  • 他のクラスからのアクセシビリティ: @property.h で宣言@synthesizeし、.m で宣言すると、ivar はパブリックに読み取りおよび書き込み可能になります。これは、privat クラスの拡張機能で防ぐことができます。@propertypublicを宣言し、privat クラス拡張を介しreadonlyて内部的に宣言することもできます。readwrite例: 私有地

   // [In the implementation file]  
   @interface MyClass ()  
   @property (nonatomic, retain) NSMutableArray* someData; // private!!   
   @end  

   @implementation MyClass @synthesize someData   
   @end
  • カスタムのゲッターとセッター: 必要に応じて、カスタムのゲッターとセッターを作成することもできます。また、ゲッターまたはセッターを作成して、もう一方を自動的に処理することもできます@synthesize。また、そのようなゲッターとセッターにカスタム ロジックを書き込むことができます。たとえば、変更後にテーブルビューをリロードできます@property

  • Automatic Key-Value-Observing (KVO) 準拠: KVO を使用している、または使用する予定がある場合は、プロパティを宣言するだけで基本的に無料で入手できます。他に何もする必要はありません!

  • iVar を public にする必要がある場合は@property、iVar のゲッターとセッターを作成するよりも簡単に作成できます。

  • を使用する@propertyと、iVar で宣言する必要はありません (iOS および 64 ビット Mac Os X アプリケーションの場合)。次の方法で実行できます@synthesize

    @synthesize myiVar = _myIvar;
于 2012-07-13T06:35:24.117 に答える
0

UISwitch のプロパティを作成しました。したがって、viewcontroller オブジェクトを使用することで、どこでも使用できます。

あなたが現在いるビューでそれを使用したいとします。

self.toggleSwitch

// また

viewControllerObject.toggleSwitch

于 2012-07-13T07:13:29.910 に答える