Month of 8月, 2011
たくさんのチェックボックスを一度にON/OFFする方法
Posted 8月 9th, 2011 by hippos
in
makePasswordの中で31個のチェックボックスを使うのですが、例えばすべてのチェックボックスをONにしたりOFFにしたりするにはCocoaではどうやるのか悩みました。オーソドックスにはOutletで接続して
[myCheckBox setState:YES]とかするのだろうけど、31個のOutletはさすがに面倒。似たような場合MFCなら、コントロールのIDを連続的に定義しておいて
int firstControl = IDC_XXXXX;
for(int controll = IDC_FIRST_XXX; controll < IDC_LAST_XXX; ++controll)
{
CButton* myButton = (CButton*)GetDlgItem(controll);
myButton->SetCheck(1);
}みたいなカンジでいちいちコントロール変数を定義しておかなくとも一気にセットできるのに。
結局、巧いテが見つからず今回はNSButtonのサブクラスを作成しコントロールクラスからtag値の配列をブロードキャスト
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ChangeSpecialCharacterNotify" object:arrayContolsTag]; 各コントロールクラスでは通知に自分のtag値が含まれていたらON、含まれていなければOFFにする
- (void)awakeFromNib
{
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(handleSetState:)
name:@"SpecialCharacterNotify" object:nil];
}
-(void)handleSetState:(NSNotification*)aNotification
{
NSArray* characters = [aNotification object];
if (characters != nil &&
[characters containsObject:[NSNumber numberWithInteger:[self tag]]])
{
[self setState:YES];
}
else
{
[self setState:NO];
}
}っていう実装にしたんですが、もっと巧いやり方はないものか...なんかモヤモヤがとれません。ダイレクトに送る方法はないのかな?
mkpasswd作りました
Posted 8月 7th, 2011 by hippos
in
ランダムなパスワードを生成するツールが欲しくて作りました。時間がなかったのでLinux等に付属のmkpasswdを流用しようと思ったのですが、ソースをみているうちに単なるrandom()を少しアレンジしただけのものでもいいかという気になったので、一気に作成しました。本当は、ANSI X9.17で乱数生成するつもりだったんですけど面倒なのでヤメました。
ソースはGitHub::makePasswordにあります。




最近のコメント
2 weeks 2 days ago
37 weeks 3 hours ago
1年 1週 ago
1年 1週 ago
1年 18 weeks ago
1年 19 weeks ago
1年 19 weeks ago
1年 30 weeks ago
1年 30 weeks ago
2 years 11 weeks ago