2011-02-17 4 views
1

現在、XCodeで棒グラフを作成しようとしています。私はCPGraphとすべてのものを試してみましたが、それらは古くて、XCode 4の助けが必要です。私はこれで完全にnewbです。それがあなたの助けを必要とする理由です。ここXcode drawRectのヘルプでテキストフィールドを使用して値を入力する

は私のコードである:

- (ボイド)のdrawRect:私はポイント値のいずれかを変更したこと(CGRect)RECT

{

NSString *s = textField.text; 
value = [s intValue]; 
NSLog(@"%i",value); 


    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context, 60); 

    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 

    CGFloat components[] = {0.0, 0.0, 1.0, 1.0}; 

    CGColorRef color = CGColorCreate(colorspace, components); 

    CGContextSetStrokeColorWithColor(context, color); 

    CGContextMoveToPoint(context, 400, value); 
    CGContextAddLineToPoint(context, 400, 100); 

    CGContextStrokePath(context); 
    CGColorSpaceRelease(colorspace); 
    CGColorRelease(color); 

}

お知らせ"値"のために。 私が行ったことは、UITextFieldを作成することです。私はUITextFieldに500のように書くことができ、バーはそれ自体を調整したいと考えています。現在NSLogは、私のアプリをビルドする前に手動でTextFieldに数値を入力しても、値が0に等しいことを教えてくれます。 私は3日前から検索しています。見つかったものはすべてエラーが出て、不完全です.xcodeのobjective-cについてはほとんど分かりません。私はまた、あなたが彼に言わないと、このタイプの行がリアルタイムでリフレッシュされないことを私の検索の間に気づいた。それが私の問題の一部であれば、私はそのことについても助けて欲しいです。私のコードの詳細を知りたいのなら、教えてください。 誰かが私を助けることができれば本当に感謝します。ここで

は私.Hある:​​

@interface draw2D:UIViewの

{

UITextField *textField; 

}

@property(アトミック、保持)IBOutlet UITextFieldの*テキストフィールドと、

@end

+0

私はInterface BuilderのIBOutletにテキストフィールドを接続していると仮定していますか?ここ – Merky

+0

は私がやったことです: @interface draw2D:UIViewの { のUITextField *テキストフィールド。 } @property(非構造、保持)IBOutlet UITextField * textField; @end – proticsam

+0

通常、インターフェースビルダー(IB)を使用してIBOutlet経由でテキストフィールド(またはそれに関するもの)をバインドする場合は、プロパティとして追加する必要はありません。だから私はあなたが上記のように宣言したインスタンスにテキストフィールドを接続するためにIBを使用したと仮定していますか?そうしないと、テキストフィールドはゼロになります。 – Merky

答えて

0

OKが、それはあなたがIBにフックアップあなたのテキストフィールドが所有者をファイルする必要があるためのように見える、それは典型的には、UIViewのであるとして、あなたが上記の持っているクラスではないアプリのデリゲートです。したがって、File's OwnerをこのUIViewに変更しない限り、テキストフィールドは連結されません。したがって、通常は私が行うことはIBのxibウィンドウにUIViewを追加することです(XIBを作成するときに無料のものを使用していない場合)。それでは、File's Ownerではなく、テキストボックスを添付します。あなたがUITextFieldを宣言していない限り、何もファイル所有者にどのようにアタッチされているのかという質問をしています(このビュークラスへのクラスをアプリケーション代理人から変更しなかったとします)。

私が知っていることは、誰かがこれを初めて知っていれば、ギリシャに似ているということです。私はJava、C/C++、C#などで何年も前から開発してきました。

あなたがこれを初めて知りましたなら、Big Nerd RanchのiPhoneデベロッパーブックを強くお勧めします。私はそれが非常に便利だとわかった。

+0

それはまさにそれはあなたに非常に感謝していた。今、私はtextFieldの値をリアルタイムで変更したいのか、バーの更新自体を変更したいのかと思っていました。それが可能なのかどうか、それがどうすればいいのだろうか。私は、リフレッシュボタンを挿入すると思っていたが、私はビューを更新するコマンドとそれをリンクする方法を知らない。何か案が? btwもう一度ありがとう。 – proticsam

+0

あなたが行うことができることは、あなたのビューまたはビューコントローラをUITextFieldDelegate(そのプロトコルを実装する)としてセットアップすることです。次に、.mファイルの - (void)textFieldDidEndEditing:(UITextField *)textFieldメソッドをオーバーライドします。テキストフィールドからテキストを取得し、[self setNeedsDisplay]を呼び出します(selfはビューです)。ビューコントローラでそれを行った場合、[[self view] setNeedsDisplay])になります。最後に、IBを使用して、テキスト・フィールドのデリゲートをビュー・コントローラーまたはビュー・コントローラー(UITextFieldDelegateのために選択したもの)に設定します。 – Merky

+0

もう一度、この本を読んで例を取り上げることを強くお勧めします。それは少し時間がかかるが、それは十分に価値がある。 – Merky

0

[OK]をクリックすると、ボタンをリフレッシュして行を再描画する方法がわかりました。

私がしたことは、ボタンを作成し、私の行が描かれている私のUIViewとリンクすることでした。内部は[self setNeedsDisplay];と書かれています。ボタンをクリックするたびにビューが更新され、drawRectと同じメソッドで設定したNSlogが返されます。

多くのおかげで再びメルキー。

関連する問題