お次はComboBoxです。
2017-04-20
えぇ、今日もおはようございます、氷翠です。
連日、Objective-Cの勉強をしています。
ということで、今回は、ComboBoxの使い方。
というより、設置の仕方というべきか。
まぁ、この構成は前回のTableViewに比べて極めて単純。なので、スムーズにいけるんじゃないだろうかと思います。
で、「Main.storyboad」のほうはこんな感じで設置してあります。
今回はどうやってこのComboBoxにアイテムを追加していくのか?
ということが目的なので、それ以外のメソッドは省きます。
とにかくアイテムを自由に追加できないと意味がありませんから。
で、今回は1つずつデータを追加していく形にするというのを前提に考えます。
なぜそれを前提にするのか。
Objective-Cのデータの世界は氷翠が今までやってきた言語とはだいぶ違っていて、しょっちゅう勘違いとかおこします。
そのせいでデータが全く表示されないとか、変なデータが表示されるとかそういった現象が起こってしまうので。
ということで、一つずつデータを追加していくという流れをやるってきめたので、左のように設定します。
「Items」の中身はもちろん空にしておきました。
で、次が結構大事。
その下の方にある「Content」って項目の部分に「Autocompletes」と「Uses Data Source」というのがあります。
問題なのは後者の「Uses Data Source」の方でこれにチェックが入っていると、今回のやり方ではデータは追加されません。
次に、「ViewController.h」を開いて、ちょっと編集しておきます。
#import <Cocoa/Cocoa.h> @interface ViewController : NSViewController @property (weak, nonatomic) IBOutlet NSComboBox *comb_1; @end
と、こんな感じでOutletを用意しておきます。
「Main.storyboad」を開いて「Combobox」と「ViewController」を接続します。
左のように、先にhファイルを用意しておくと、接続するときに名前が出てくるので、それをつなぎます。
では今回のプログラムはこちら。
#import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. for(int i = 0; i < 10; i ++) { NSLog(@"index:%ld", (long)i); NSString *str = [NSString stringWithFormat:@"文字列_%ld", (long)i]; NSLog(@"str:%@", str); [_comb_1 addItemWithObjectValue:str]; } NSLog(@"combobox numberOfItems:%ld", (long)[_comb_1 numberOfItems]); } - (void)setRepresentedObject:(id)representedObject { [super setRepresentedObject:representedObject]; // Update the view, if already loaded. } @end
「ViewController.m」に直接記述してしまいましたが、問題は「viewDidLoad」の中身ということはわかるでしょう。
今回は単純に文字列を10個作って並べるだけのものです。
NSString *str = [NSString stringWithFormat:@"文字列_%ld", (long)i];
この部分はわかるでしょう。単に文字列作っているだけなので。
あと、この際なので説明すると、
NSLog(@"str:%@", str);
というのは、ログに出力しています。
現在のデータがどのようになっているのか確認したいので、こんなのをつけています。
[_comb_1 addItemWithObjectValue:str];
でこちら。実際にアイテムを追加するためのものです。
サンプルでは別のメソッドを使っていましたが、今回はデータを追加するというのが目的だったので、マニュアルをみてなんとなく探して見つかったのがこちら。
まぁ他にも追加する方法があるということです。
これでだいぶ、氷翠が作ろうとしているアプリケーションに近づいてきましたが、まだ肝心のファイル操作を勉強していませんw
先にやるべきだろうけど、まだですw
何故か?
氷翠は形から入る人なので。
コメントを残す