-1

実際にいくつかの UIView を切り替えるメソッドを書きました。メソッドに入るとき、スーパービューからこのビューを正確に削除するには、現在のビューがどれであるかを知る必要があります。この目的のために、ヘッダー ファイルでプロパティを宣言しました。

@property (weak, nonatomic) UIView *currentView;

メソッドで特定のビューに変更した後、このビューをプロパティに割り当てて、メソッドを再度入力したときに使用し、要求された場合はスーパービューからこのビューを削除したいと考えています。メソッドは次のようになります。

...
nextView = [self loadNextView]; // the view is loaded from a NIB here
if (self)
{
    [self viewWillDisappear:YES];
    [[self currentView] removeFromSuperview];
    [[self view] addSubview:nextView];
    [self currentView] = [self nextView];
...

残念ながら、コンパイラは currentView はここでは割り当てられないことを教えてくれます。私の目的のために現在のビューを思い出すための別の、できればより良い方法はありますか、それともまったく別の方法を使用する必要がありますか?

4

3 に答える 3

0

関数またはメソッド呼び出しの値に割り当てることはできません(右辺値を返します)。プロパティアクセサ構文を使用する必要があります。

self.currentView = [self nextView];

または、セッターを明示的に呼び出します。

[self setCurrentView:[self nextView]];
于 2013-01-02T12:34:01.773 に答える
0

これを試して

交換

[self currentView] = [self nextView];

self.currentView = [self nextView];
于 2013-01-02T12:34:20.123 に答える
0

次の行の代わりに、

[self currentView] = [self nextView];

次のようにします。

[self setCurrentView:[self nextView]];
于 2013-01-02T12:35:04.077 に答える