0

scrollView にかなりの数の異なる UI 要素を設定したいと考えています。したがって、scrollView の現在の位置を記憶し、要素を scrollView の現在の位置に追加するだけのメソッドを作成すると考えました。

何かのようなもの:

- (void)addUIElement:(id)element withWidth:(CGFloat)width andHeight:(CGFloat)height andYGap:(CGFloat)YGap {

    element.frame = CGRectMake(currentScrollPos.x, (currentScrollPos.y + YGap), width, height);
    [scrolly addSubview:element];

    //And then set the current scroll position here
}

残念ながら、element.frame = ... にアクセスしようとすると、構造体や共用体ではないメンバーのリクエストが表示されます。[要素フレーム] = ...を実行しようとすると、代入の左オペランドとして左辺値が必要です。

さて、まず第一に、スクロールビューにオブジェクトを動的に追加する最良の方法がわかりません。たぶん、誰もがより良い、またはより簡単なアプローチを持っています。

一方、上記が機能しない理由がわかりません?! 要素を実際のクラスにキャストする必要がありますか? 私はそうしなくてもいいと思っていました...そして、私の方法はもはやあまり意味がありません. または、少なくともさらにいくつかの手順が必要になります...

4

2 に答える 2

0

これはうまくいくはずです:

 [element setFrame:...];

ただし、メソッドでさまざまな UI 要素を使用する場合は、id の代わりに要素パラメーター UIView* を作成できますか? このようにして、コードはすべての UIView サブクラスで機能します (これが実際に必要なものだと思います)

于 2010-08-04T14:56:59.853 に答える
0

違いは、「id」にはフレームへの参照がないことです。それは何でもありえます。代わり(UIView *)elementにメソッド宣言で行うか、代わりに element.frame の呼び出しで行いたい場合は、((UIView *)element).frame.

(ええ、画面に表示するものはすべてUIView-- UIButtonUIImageViewなどから継承されます。)

于 2010-08-04T15:06:08.267 に答える