0

XcodeとObjectiveCの基本を学び始めたばかりで、出発点として基本的なトーチアプリを作成しています。

私はすでにほとんどの基本事項を理解しましたが、別のアクションから別の要素を参照する方法がわかりません(この用語が正しいかどうかはわかりません)。

例えば:

- (IBAction)screenButtonClicked:(id)sender {
    UIButton *button = (UIButton *)sender;
    if (_ScreenOnOff) {
        [self.view setBackgroundColor:[UIColor blackColor]];
        [button setTitle:@"Screen (Off)" forState: UIControlStateNormal];
    }
    else {
        [self.view setBackgroundColor:[UIColor whiteColor]];
        [button setTitle:@"Screen (On)" forState: UIControlStateNormal];
    }
    _ScreenOnOff = !_ScreenOnOff;
}

ストーリーボードにそれにリンクされているボタンがあり、表示および非表示にしたいUIImageViewがあります(ifによって異なります)。

私はこれを行う方法についてどこでも調べて、Googleにできる限り多くの方法でそれを入れましたが、運がありません。

これはObjectiveCの小さな一歩かもしれませんが、教えてくれるので助けてください。

前もって感謝します。

4

2 に答える 2

3

ヘッダーファイルでUIImageViewのIBOutletを宣言します。

@property (weak) IBOutlet UIImageView *myImageView;

その後、UIImageViewをInterfaceBuilderのこのIBOutletに接続します。

次に、次のように参照(および非表示)できます。

self.myImageView.hidden = _ScreenOnOff;

実装ファイル内。


参照:コンセントの作成と接続

于 2013-03-25T12:58:04.727 に答える
0

このアクションは、おそらくViewControllerが所有しています。ビューコントローラに「imageView」という名前のUIImageViewプロパティがある場合は、_ScreenOnOffを使用する場合と同じように、アクション内からアクセスできます。

画像ビューを非表示にするには、次のようにします。

self.imageView.hidden = YES;

_imageViewによってプロパティに直接アクセスするのではなく、self.imageViewとself.ScreenOnOffを使用することが重要であることに注意してください。クラスでプロパティを宣言すると(IBOutletであるかどうかに関係なく)、コンパイラはそのプロパティへのアクセサメソッド(getおよびsets)を合成します。したがって、self.ScreenOnOffを呼び出すと、[selfScreenOnOff]を実行するのと同じようになります。

'_'でプロパティに直接アクセスできるのは、initメソッドとdeallocメソッドの内部だけです。'-(void)viewDidLoad'はinitメソッドのタイプです。私はあなたがこのようなものが欲しいと思います:

- (IBAction)screenButtonClicked:(id)sender {
UIButton *button = (UIButton *)sender;
if (self.ScreenOnOff) {
    [self.view setBackgroundColor:[UIColor blackColor]];
    [button setTitle:@"Screen (Off)" forState: UIControlStateNormal];
    self.imageView.hidden = YES;
}
else {
    [self.view setBackgroundColor:[UIColor whiteColor]];
    [button setTitle:@"Screen (On)" forState: UIControlStateNormal];
    self.imageView.hidden = NO;
}
self.ScreenOnOff = !self.ScreenOnOff;

}

それがお役に立てば幸いです。

于 2013-03-25T13:23:07.603 に答える