-1

これにかなりの時間を費やしましたが、解決できませんでした。この基本的なチュートリアルに従って、次の機能を持つ cocoa mac os アプリケーションを作成します。

  • テキスト コントロール
  • ボタン制御
  • ラベル コントロール

新しいクラスを作成し、NSString オブジェクトを追加し、NSString オブジェクトのクラス名を自分のクラスに変更しました。次に、テキスト ボックスをコントロール + ドラッグし、ラベルを myclass.h (アウトレット) に移動します。ボタンにも同じことをしましたが、今回はアクションを選択しました。

今、私は自分のラベルにアクセスするためにコードを実行していますが、できません。これらは Intellesense には表示されません。私はこれにかなりの時間を費やしました。これは非常に基本的な質問です。私は何を間違っていますか?XCODE 4.6.3 を使用しています。

------------------- .h file ---------------------
#import <Foundation/Foundation.h>

@interface myclass : NSObject
- (IBAction)doSomething:(id)sender;
@property (weak) IBOutlet NSView *mytextbox;
@property (weak) IBOutlet NSTextField *mylabel;

@end

----------------- .c file ---------------------------
#import "myclass.h"

@implementation myclass

- (IBAction)doSomething:(id)sender {
    [self.mytextbox.value setStringValue:@"hello there"];

    [mytextbox] (not accessible)
}
@end
---------------------------------------------
4

3 に答える 3

0

それを NSTextField にしてみてください

@property (weak) IBOutlet NSTextField *mytextbox;

nibファイルでも修正してください。

于 2013-06-30T13:20:10.903 に答える
0

ここでのトリックは、変数 (プロパティ) 名の前にアンダースコア文字を使用する必要があったことです。アンダースコアがどのように機能するのか、その目的は何なのかわかりません。私はxcodeが初めてです。そう

_mytextbox  //worked
于 2013-07-01T02:35:57.280 に答える
0

ではなく.c file、拡張子 .m を付ける必要があります。(または、C++ コードも使用する場合は .mm)。これは単なるスタイルの問題ではなく、必要です。

[mytextbox] (not accessible)

mytextbox インスタンス変数にアクセスするには、self.mytextbox または [self mytextbox] を実行します。

于 2013-06-30T15:47:09.840 に答える