解放区在住氷翠 緑の閃光
【解放区在住氷翠】氷翠のお気楽日記

お次は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

何故か?

氷翠は形から入る人なので。

コメントを残す

メールアドレスが公開されることはありません。