0

コントローラーでプログラムで作成されたビューを表示する UIView クラスがあります。

UIView を作成 (初期化) するときに、UIViewController からパラメーターを転送したいので、UIView のインスタンス変数を初期化できます。awakeFromNib呼ばれる前にそれを起こしてほしい。したがって、awakeFromNibこれらのパラメーターを使用できます。

で行う必要があると思います- (id)initWithCoder:(NSCoder *)aDecoderが、どうすればよいですか?受信するのはaDecoder

このようなもの:

- (id)initWithCoder:(NSCoder *)aDecoder {

    if(self = [super initWithCoder:aDecoder]) {
         _instanceParameter = parameterFromController;
    }

    return self;
}


-(void)awakeFromNib{
    if (_instanceParameter)
         do logic
}
4

2 に答える 2

1

あなたは " UIView" を何かにサブクラス化したと思います。それを " " と呼びましょうLudaView

パラメータのプロパティを公開し、それを xib ファイルからロードすると、そこにパラメータを設定できます。言い換えると:

_myUIView = (LudaView *) [[[NSBundle mainBundle] loadNibNamed:@"myUIView" owner:self options:nil] objectAtIndex:0];
if(_myUIView)
{
    _myUIView.parameters = parametersFromViewController;
}

" "内に BOOL プロパティまたは ivar を設定することもできます。LudaViewこれにより、描画メソッドが初めて呼び出されたときに設定を行うことができます。例えば

- (void)drawRect:(CGRect)rect
{
   if(everythingSetUp == NO)
   {
      // do stuff with your parameters here
      everythingSetUp = YES;
   }
   // you shouldn't need to call [super drawRect: rect] here if 
   // subclassing directly from UIView, according to Apple docs
}
于 2013-04-28T09:16:42.300 に答える