ビュー コントローラーからビュー (サブビュー) に特定の iVar を取得しようとしているため、drawrect はユーザー入力に基づいて形状を描画します。これらの変数をサブビューにハードコーディングすると、形状は完璧に描画されますが、ゲッターを使用してビュー コントローラーからカスタム変数にアクセスすると、nil に戻り、描画が台無しになります。エラーや警告は表示されません。ゲッターに問題があることは知っていますが、何か提案はありますか? cgcontext を drawrect で使用できるように、変数をサブビューに渡す例はありますか? 私は大いに立ち往生しています。この時点で、私の問題は非常に単純であり、根本的な何かが欠けていると思います。セッター/ゲッターが詰め込まれていると思いました。
3 に答える
ええ、あなたは両方とも間違っていましたが、私はあなたが私を助けてくれることから多くを奪いました. 結局、コードを投稿する必要はありませんでした。私はデバッグのスキルを大幅に向上させなければなりませんでした。別の投稿の誰かが、MVC の違反について言及しました。ビューコントローラーからのカスタム値に、uiviewのivarを設定する必要がありました。つまり、サブビューから取得するのではなく、コントローラーから設定する必要がありました。
「から」取得するもの (つまり、親、ビュー、またはゲッターにアクセスしているもの) が nil でないことを確認してください。それらにアクセスする直前にブレークポイントを設定し、ターゲットが有効であり、有効なデータがあることを検証してみてください。
もっと多くのコードを見る必要があります。ベンは、あなたの見解のどこかに を設定しなければならないと言っていましたparent = (some code to get a reference to my parent)
。これが実際に機能することを確認してください。つまり、親への参照が実際にあることを確認してください。ivar が正しい場合でも、親が nil の場合[nil getSomeiVar]
、ほとんどの場合、送信すると 0 が返されます。
コードをよく理解していないので、これは私の推測です。UIViewController のどこかに、次のようなものが必要です。
myView = //make your view
[myView setParent:self]
親はビューの変数であり、アクセスできるようにプロパティがあります
編集:あなたが何を作っているかを知っているかどうかが重要なのはなぜですか?
setParent が機能するには、次のことを行う必要があります。
YourUIViewControllerSubclass *parent;
ビューの .h のivar@property (nonatomic, retain) YourUIViewControllerSubclass *parent;
ビューの .hにあるこの ivar のプロパティ@synthesize parent;
ビューの .m 内のこの ivar の合成@implementation