0

私の質問は、CS193p の課題 3 に関するものです。

drawRectビューコントローラーから渡された情報を受け取るためにビューに入るのにひどい時間を過ごしています。基本的に、私の目標は、ビュー固有の情報 ( などself.view.size.width) をコントローラーに渡し、コントローラにいくつかの変更 ( などresult = self.view.size.width * 2) を加えさせ、新しい情報を取得して描画できるように にresult戻すことです。drawRect委任が正しく設定されていると確信しており、潜在的な回避策のリストを実際に試しました。

  • 私が自分の経由@propertyでアクセスするパブリック View を作成しますcontroller.m

    View *newView someResult = newView.variable

view.m次に、経由でアクセスしようとします

self.variable
  • ビューの@protocalに設定されたメソッドを使用します。これを介してデータを渡そうとしますmyView.dataSource someMethod:someData

しかし、これまでのところ、これらのどれも現在機能していません (つまり、 myself.variableは常に 0 になり、データが渡されなかったことを示します)。あなたの助けに感謝します!

アップデート:

原因は、ストーリーボードでView Controller を View にコントロールドラッグしなかったため、 Controller が接続されなかったことです...しかし、少なくとも今は機能します。^_^

4

2 に答える 2

0

これはあなたがやりたいことの正しい説明ですか?あなたはView Controller(おそらくコースの電卓タイプのView Controller)を持っていて、そのView Controller(そのビューには電卓ボタンがあります)とそれ以外のビューの間で通信したいですか?

その場合は、次の手順を実行する必要があります。

代理人から情報を受け取りたいというあなたの見解では:

@protocolデリゲートに実装させたいメソッドで を宣言します。前述のデリゲートに準拠するビューのヘッダー ファイルでプロパティを宣言します。@property (nonatomic, weak) delegate<NameOfTheProtocol> delegate;

デリゲートとして機能するビュー コントローラーで、プロトコルに準拠していることを宣言しますMyClass: UIViewController <NameOfTheProtocol>。そのView Controllerの実装ファイルで、プロトコルのメソッドを実装します。情報を受け取りたいビューを作成するたびに、そのdelegateプロパティをView Controllerに設定します。

それらの間で情報を渡すには(どの情報を渡したいのかわかりません)、プロトコルメソッドは次のようになります。-(CGPoint)pointToDrawAtGivenPosition:(CGPoint)point

デリゲート プロパティを持つビューでは、drawRect で次のようなことができます。

CGPoint pointToDrawAt = [self.delegate pointToDrawAtGivenPosition:CGPointMake(100, 100)]; //Now draw that point or whatever.

基本的に、ビューはデリゲートに何かを描画する場所を決定するよう求めています。いくつかの情報がデリゲートに渡され、デリゲートはビューが描画される正しい位置で応答します。

于 2012-10-06T01:11:17.663 に答える
0

View *newView someResult = newView.variableは有効な構文ではありません。newView.variableタイプでない場合View、それは問題です。

newViewがすでに宣言されている場合は、 variableusingでアクセスしますint myValue = newView.variable(つまり、int 型であると仮定します)。

例は次のとおりです。

// Somewhere in your code, you declare your object
UIView *otherView = [[UIView alloc] init];

// Somewhere else, you set a variable of your object
otherView.backgroundColor = [UIColor blackColor];

// Again, somewhere else you want to access that value
UIColor *thatColor = otherView.backgroundColor;

これで十分に説明できることを願っています。

于 2012-10-05T15:50:29.150 に答える