2

ビューコントローラーのインスタンスを作成し、それを別のビューにモーダルで表示しています。

[viewController receiveNumber1:number1 andNumber2:number2];
[viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:viewController animated:YES];

私がやりたいのは、初期化時にこの新しいViewController内に2つのプロパティを設定することです。

私はこれを次のようなカスタムメソッドを呼び出すことで行うことができます(ここでは何かがint変数です):

[viewController methodProperty1:something1 andProperty2:something2];

ただし、新しいビューのコンテンツはこれらの数値に依存するため、初期化時にこれらのプロパティを設定する必要があります。

初期化中に新しいビューに情報を渡す方法はありますか?何かのようなもの:

[[UIViewController alloc] initWithValue1:something1 andValue2:something2];

また、理由がわかりません

CustomViewController *view = [[CustomViewController alloc] init];
view.property = newValue; / [view setProperty:newValue];

この構成では機能しません。つまり、プロパティの値は変更されません。新しいビュー内でメソッドを呼び出してそのプロパティをそのように設定できますが、プロパティを直接設定することはできませんか?

これらが下手な質問である場合は申し訳ありませんが、私は一種の初心者です。

本当にありがとう!

4

2 に答える 2

3
  1. view.property = newValue[view setProperty:newValue]は同等の用語です。
  2. ビューコントローラに1つまたは複数のカスタム初期化メソッドを実装できます。これを停止する必要はありません。公式ドキュメントを参照して、カスタム初期化子の実装方法に関するいくつかのルールを尊重していることを確認してください。

コードスニペット:

-(id)initWithValue1:(NSInteger)value1 andValue2:(NSInteger)value2
{
    if (self = [super init])
    {
        _firstValue = value1;
        _secondValue = value2;
        return self;
    }
    else return nil; // or handle the error
}
于 2012-12-30T23:23:53.603 に答える
2

CustomViewController.hで、設定する2つのプロパティと初期化メソッドを定義します。次に例を示します。

@property (nonatomic, assign) NSInteger firstValue;
@property (nonatomic, assign) NSInteger secondValue;

-(id)initWithFirstValue:(NSInteger)value1 andSecondValue:(NSInteger)value2;

次に、で、CustomViewController.m前に宣言したメソッドを実装します。

-(id)initWithFirstValue:(NSInteger)value1 andSecondValue:(NSInteger)value2
{
    self = [super init];
    if (self)
    {
        // Supposing you haven't synthesized your property and you are using
        // latest Xcode build, instance variable are automatically created
        _firstValue = value1;
        _secondValue = value2;
    }
    return self;
}

最後に、次のコード行を使用してコントローラーを割り当てることができます。

CustomViewController *controller = [[CustomViewController alloc] initWithFirstValue:value1ToSet andSecondValue:value2ToSet];

最後のアドバイスカスタム初期化メソッドを実装するときは、で呼び出す
必要のあるメソッドを適切に選択する必要があります。 たとえば、コントローラーがUIViewControllerのサブクラスである場合、またはUITableViewControllerのサブクラスである場合は、呼び出すことを好みます。 他にもカスタムinitメソッドがありますが、カスタムコントローラースーパークラスに関するドキュメントを読んで他の情報を見つけることができます。initsuper
self = [super initWithFrame:CGRectZero];self = [super initWithStyle:UITableViewStylePlain];

于 2012-12-30T23:22:32.490 に答える