0

私はこれが初めてで、答えが見つかりませんでした。私の古い 4.x アプリでは、独自の UIView を実装したファイルを追加しました。ここで、「drawRect:(CGRect)rect」を実行していくつかの行を描画しました。例えば...

/// DrawView.h
#import <UIKit/UIKit.h>
@interface DrawView : UIView <UINavigationControllerDelegate> {
...
}
-(void)DoSomething;
@end

次に、View Controller .m ファイルで、DrawView.h をインポートした後、次のようにします。

self.view = (DrawView *)self.view;
[(DrawView *)self.view DoSomething];

私のIOS4のもので魅力的に働きました。ストーリーボードを使用して IOS5 アプリを試してみたところ、このトリックは機能しなくなりました。

最初の行...

self.view = (DrawView *)self.view;

クラッシュしません。しかし、画面には絵が見えません。drawRect が何かを表示することを期待していました。何もない。だから私は任務が成功したか、どこかに何かが隠されているとは思わない.

二行目…

[(DrawView *)self.view DoSomething];  

次のエラーを返します。

-[UIView DoSomething]: 認識されないセレクターがインスタンス 0x87631b0 に送信されました sharedlibrary apply-load-rules all

プログラム受信シグナル SIGABRT

drawRect (ペイント用) はビューコントローラーで直接実行できず、UIView の別のインスタンス化された実装で実行する必要があることをどこかで読んだことがあります。それが私がこれをする理由です。しかし、どうやらカスタム ビューをコントローラーの self.view に割り当てるための私の古いトリックは機能しなくなりました。

これを行う方法を知っていますか?つまり、ストーリーボードなどを使用するときですか?

ありがとう

4

1 に答える 1

0

他の選択肢は見当たりませんでした。だから私はこれを答えとして投稿します。何か知っている場合は、コメントするか、より良い代替案を投稿してください...

DrawView *myView = [[[DrawView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease]; 
[self.view addSubview:myView]; 
[myView DoSomething];

私の場合、実際に.hファイルで* myViewを宣言し、それを合成して「autorelease」を削除し、deallocをリリースしました。

于 2012-11-07T18:15:44.490 に答える