2014年03月18日

Objective-CでURLエンコード

Objective-C - 2バイト文字列のURL変換 - Qiitaを参考に文字列をURLエンコード。RFC 1738 と 1808に準拠らしい。

NSString *str = @"あいうえお";
NSString *urlstr =
(NSString *)CFBridgingRelease(
CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef) str,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
NSLog(@"%@",urlstr);


ちょっと何をやっているかはおいおい調べる。
posted by ねこまんま at 14:13
Comment(0) | TrackBack(0) | iPhone

2014年03月14日

NSDictionary

NSDictionaryはキーと値がペアになった配列。つまりPHPでいうところの連想配列、Perlでいうところのハッシュ、JavaScriptでいうところのオブジェクトにあたる。

NSDictionary *dic = [NSDictionary dictionaryWithObject:@"hoge" forKey:@"Key"];
NSLog(@"%@",dic);


リテラル式を使うといかのような感じ

NSDictionary *dic = @{@"hoge": @"value"};
NSLog(@"%@",dic);


複数のNSDictionaryを指定するにはいかのような感じ

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
@"hoge", @"name",
@"999-9999-9999", @"tel",
@"東京都", @"address",nil];
NSLog(@"%@",dic);


リテラル式を使うといかのような感じ

NSDictionary *dic = @{@"hoge": @"value",
@"999-9999-9999": @"tel",
@"東京都": @"address"};
NSLog(@"%@",dic);
posted by ねこまんま at 12:56
Comment(0) | TrackBack(0) | iPhone

2014年03月12日

Objective-Cで配列を扱う

Objective-Cで配列を扱う方法

配列を作って表示

for文を使う方法

NSArray *array = @[@"a", @"b", @"c", @"d"];
NSLog(@"%@", array);
for (int i = 0; i < array.count; i++) {
NSLog(@"%@",array[i]);
}


for in 文を使う方法

NSArray *array = @[@"a", @"b", @"c", @"d"];
for (id value in array) {
NSLog(@"%@",value);
}


enumerateObjectsUsingBlockを使う方法、これがイケてる方法らしい

NSArray *array = @[@"a", @"b", @"c", @"d"];
[array enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@", obj);
}];


enumerate(エヌムレイト)とは「挙げる,列挙する」などの意味。参考

enumerateObjectsWithOptions:NSEnumerationReverseなどを利用すると後ろからループできる

NSArray *array = @[@"a", @"b", @"c", @"d"];
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%d: %@", idx, obj);
}];


enumerateObjectsWithOptions:NSEnumerationConcurrentを利用すると配列を並列で同時処理できる

NSArray *array = @[@"a", @"b", @"c", @"d"];
[array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%d: %@", idx, obj);
}];


concurrent(コンカレント)は「同時に起こって」などの意味。参考

参考:Objective-C - NSArrayでfor(; ;)とかfor-inを使うのをやめて、enumerateObjectsUsingBlock:を使う - Qiita
posted by ねこまんま at 11:17
Comment(0) | TrackBack(0) | iPhone

2014年02月26日

Objective-Cで乱数表時

rand()で表示できるがsrand()で初期化しないと毎回同じ数が表示される

srand(time(NULL));
int hoge,fuga;
hoge = rand() % 10;
fuga = rand() % 10;
NSLog(@"%d,%d",hoge,fuga);


srand()とrand()の処理をまとめたarc4random()が存在するのでそっちを使った方が便利

int hoge,fuga;
hoge = rand() % 10;
fuga = rand() % 10;
NSLog(@"%d,%d",hoge,fuga);


参考:iPhone-Labo: ランダムな数値を取得する - rand() arc4random()
posted by ねこまんま at 10:47
Comment(0) | TrackBack(0) | iPhone

2013年08月26日

Objective-CのNSMutableStringで編集可能な文字列オブジェクトを作成

NSMutableStringオブジェクトで作成した文字列オブジェクトは後から変更や追加が可能です。

文字列オブジェクトにはstringWithCapacityで文字列の長さを指定しますが、これを超えた長さの文字列の追加なども可能です。

NSMutableString *str = [NSMutableString stringWithCapacity:10];
[str appendString:@"Hello"];
NSLog(@"%@",str);//Hello
[str appendString:@" World"];
NSLog(@"%@",str);//Hello World
[str deleteCharactersInRange:NSMakeRange(5, 6)];
NSLog(@"%@",str);//Hello
[str insertString:@"2012/01" atIndex:0];
NSLog(@"%@",str);//2012/01Hello


appendStringメソッドで文字列を後ろに追加していけます。deleteCharactersInRangeメソッドでは指定したレンジの文字列の削除が、insertStringメソッドでは指定した位置に文字列が追加できます。
posted by ねこまんま at 00:51
Comment(0) | TrackBack(0) | iPhone

Objective-CのNSStringクラスで文字列を扱う

Objective-CではNSStringクラスで文字列を扱うことができます

NSString *str = @"hello world!";
NSLog(@"%@",str);//hello world!


stringWithFormatメソッドを利用することでフォーマットに文字列や数値などを入れて新しい文字列を作成することができます。

NSString *str1 = @"hello";
NSString *str2 = @"world!";
int point = 12;
NSString *str = [NSString stringWithFormat:@"%@ + %@ / %d",str1,str2,point];
NSLog(@"%@",str);//hello + world! / 12


NSStringクラスのインスタンスに対してstringByAppendingStringメソッドで文字列の連結が可能です。

NSString *str1 = @"hello";
NSString *str2 = @"world!";
NSString *str = [str1 stringByAppendingString:str2];
NSLog(@"%@",str);


lengthメソッドで文字列の長さが取得できます。

NSString *str = @"hello world!";
NSInteger num = [str length];
NSLog(@"%d",num);//12


substringFromIndexメソッドやsubstringToIndexメソッドでは文字列を特定の位置から取り出すことができます。引数には位置を指定し、位置以降を取得するにはsubstringFromIndexメソッド、位置以前を取得するにはsubstringToIndexメソッドを利用します。

NSString *str = @"hello world!";
NSString *str1 = [str substringFromIndex:4];
NSString *str2 = [str substringToIndex:4];
NSLog(@"%@",str1);//o world!
NSLog(@"%@",str2);//hell


ある位置から特定の文字数だけ取得する場合にはsubstringWithRangeメソッドを利用します。substringWithRangeメソッドは引数にNSRangeオブジェクトをとり、NSRangeのlocationプロパティに開始位置をlengthプロパティに取得文字数を指定します。

NSString *str = @"hello world!";
NSRange range;
range.location = 4;
range.length = 3;
NSString *str1 = [str substringWithRange:range];
NSLog(@"%@",str1);//o w


NSMakeRangeメソッドを利用するとNSRangeオブジェクトとプロパティを簡単に指定できます。

NSString *str = @"hello world!";
NSString *str1 = [str substringWithRange:NSMakeRange(4, 3)];
NSLog(@"%@",str1);


rangeOfStringメソッドを利用すると文字列の検索を行うことができます。検索結果はNSRangeオブジェクトで返ってきます。

NSString *str = @"hello world!";
NSString *search = @"he";
NSRange range = [str rangeOfString:search];
if(range.location == NSNotFound){
NSLog(@"%@は含まれていません",search);
}else{
NSLog(@"%@は含まれています%d文字目です",search,range.location+1);
}


isEqualToStringメソッドで文字列の比較が行えます。

NSString *str1 = @"str1";
NSString *str2 = @"str1";
if([str1 isEqualToString:str2]){
NSLog(@"%@と%@は同じも熾烈です",str1,str2);
}


compareメソッドを文字列の比較を行うこともできます、

NSString *str1 = @"str1";
NSString *str2 = @"str1";
if([str1 compare:str2] == NSOrderedSame){
NSLog(@"%@と%@は同じも熾烈です",str1,str2);
}


lowercaseStringメソッドやuppercaseStringメソッドを利用すると文字列を小文字/大文字に変換できます。

NSString *str = @"iPhone";
NSLog(@"%@",[str lowercaseString]);//iphone
NSLog(@"%@",[str uppercaseString]);//IPHONE


stringByReplacingOccurrencesOfStringメソッドを利用すると文字列の置き換えができます。

NSString *str = @"iPhone";
NSLog(@"%@",[str stringByReplacingOccurrencesOfString:@"Phone" withString:@"Pad"]);


stringByReplacingCharactersInRangeメソッドを利用すると指定した範囲の文字列を置き換えます。

NSString *str = @"iPhone";
NSLog(@"%@",[str stringByReplacingCharactersInRange:NSMakeRange(1, 5) withString:@"Pad"]);


integerValueメソッドで文字列を数値に、boolValueで真偽値に変換します。

NSString *str1 = @"123";
NSLog(@"%d",[str1 integerValue]);//123
NSString *str2 = @"y";
NSLog(@"%d",[str2 boolValue]);//1
posted by ねこまんま at 00:39
Comment(0) | TrackBack(0) | iPhone

2013年08月21日

Objective−CでNSDateクラスを使う

例えば日付を制御するNSDateクラスを使うには以下のように記述します。

NSDate *theDate = [NSDate alloc];
theDate = [theDate init];

NSLog(@"theDate = %@",theDate);//theDate = 2013-08-20 16:24:47 +0000


allocメソッドを利用しNSDateのインスタンスを作成し、initメソッドでインスタンスの初期化を行ないます。これでインスタンスであるtheDateでNsDateクラスのプロパティやメソッドが利用できるようになります。

上記の記述は以下のように一括で書くこともできます。

NSDate *theDate = [[NSDate alloc] init];

NSLog(@"theDate = %@",theDate);//theDate = 2013-08-20 16:28:49 +0000


initメソッドではなくinitWithTimeIntervalSinceNowメソッドで初期化すると指定した秒数後の日付オブジェクトが作成されます。

NSDate *theDate = [[NSDate alloc] initWithTimeIntervalSinceNow:30];

NSLog(@"theDate = %@",theDate);//theDate = 2013-08-20 16:31:03 +0000


initWithTimeIntervalSince1970メソッドでは1970年からの指定した秒数後の日付オブジェクトが作成されます。

NSDate *theDate = [[NSDate alloc] initWithTimeIntervalSince1970:100];

NSLog(@"theDate = %@",theDate);//theDate = 1970-01-01 00:01:40 +0000


通常はallocメソッドでインスタンスを生成し、イニシャライズメソッドで初期化を行ないますが、コンビニエンスコンストラクタを利用するとこれらを同時におこなってくれます。

NSDate *theDate = [NSDate date];

NSLog(@"theDate = %@",theDate);//theDate = 2013-08-20 16:36:54 +0000


NSDateFormatterクラスを利用すると任意の日付オブジェクトが取得できます。NSDateFormatterクラスのインスタンスのsetDateFormatメソッドで日付のフォーマットを与え、dateFromStringを利用することで日付のフォーマットと同じ日付オブジェクトが取得できます。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy年mm月dd日"];
NSDate * theDay = [df dateFromString:@"1999年12月31日"];
NSLog(@"theDay = %@",theDay);//theDay = 1999-01-30 15:12:00 +0000


NSLocaleクラスを利用することローケルの指定が可能です。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy年mm月dd日"];
NSDate * theDay = [df dateFromString:@"1999年12月31日"];
NSLocale *local = [NSLocale currentLocale];
NSLog(@"theDay = %@",[theDay descriptionWithLocale:local]);//theDay = Sunday, January 31, 1999, 12:12:00 AM Japan Standard Time


NSDateFormatterクラスのstringFromDateメソッドを利用すると日付オブジェクトから日付の文字列が取得できます。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy年mm月dd日"];
NSDate * theDay = [df dateFromString:@"1999年12月31日"];
NSLog(@"theDay = %@",[df stringFromDate:theDay]);//theDay = 1999年12月31日


NSDateオブジェクトのtimeIntervalSinceDateメソッドを利用すれば日付オブジェクト間の秒数が取得できます。

NSDate *theDate1 = [NSDate date];
NSDate *theDate2 = [NSDate dateWithTimeIntervalSinceNow:300];
NSTimeInterval since = [theDate2 timeIntervalSinceDate:theDate1];
NSLog(@"since = %f",since);//since = 300.000014


NSDate *theDate1 = [NSDate date];
NSDate *theDate2 = [NSDate dateWithTimeIntervalSinceNow:300];
NSTimeInterval since = [theDate1 timeIntervalSinceDate:theDate2];
NSLog(@"since = %f",since);//since = -300.000014


日付の比較はNSDateクラスのisEqualToDateメソッドで行ないます。

NSDate *theDate1 = [NSDate date];
NSDate *theDate2 = [NSDate dateWithTimeIntervalSinceNow:300];

BOOL equal1 = [theDate1 isEqualToDate:theDate2];
NSLog(@"%d",equal1);//0

BOOL equal2 = [theDate1 isEqualToDate:theDate1];
NSLog(@"%d",equal2);//1


日付の大小の比較はNSDateクラスのisEqualToDateメソッドで行ないます。

isEqualToDateの結果はNSOrderedAscendingやNSOrderedDescending、NSOrderedSameといった定数で返ってきます。

NSDate *theDate1 = [NSDate date];
NSDate *theDate2 = [NSDate dateWithTimeIntervalSinceNow:300];
NSComparisonResult result = [theDate1 compare:theDate2];
switch (result) {
case NSOrderedAscending:
NSLog(@"date1のほうが小さい");
break;
case NSOrderedDescending:
NSLog(@"date1のほうが大きい");
break;
case NSOrderedSame:
NSLog(@"同じ");
break;


参考:詳細! Objective-C iPhoneアプリ開発 入門ノート
posted by ねこまんま at 11:05
Comment(1) | TrackBack(0) | iPhone

2013年08月15日

Objective-Cのメソッド

今までよくわからなかったObjective-Cのメソッドが分かってきたのでメモ書き。

メソッドの定義

- (void)test
{
NSLog(@"ok");
}


これでclassファイルにtestメソッドが定義できる。

[self test];


これでtestメソッドが実行出来る。

つまりViewControllerクラスにtestメソッドを指定して実行するには以下のようにする。

- (void)viewDidLoad
{
[super viewDidLoad];
[self test];
}
- (void)test
{
NSLog(@"ok");
}


引数がひとつの場合は以下のようにメソッドを定義

- (void)test:(NSString *)str1
{
NSLog(@"%@",str1);
}


次のように実行する

[self test:@"hoge"];


引数が2つの場合は以下のようにメソッドを定義

- (void)test:(NSString *)str1 str2:(NSString *)str2
{
NSLog(@"%@/%@",str1,str2);
}


次のように実行する。2個以上の引数の指定はラベルの指定が必要になる

[self test:@"hoge1" str2:@"hoge2"];


返り値がある場合は以下のように定義。- (void)ではなく返す値の型を指定する。

-(NSString *)test
{
return @"hoge";
}


次のように実行する。

NSString *hoge =[self test];
NSLog(@"%@",hoge);
posted by ねこまんま at 14:50
Comment(0) | TrackBack(0) | iPhone

2013年08月02日

iPoneのUIWebViewでユーザーエージェントを変更する

iPoneのUIWebViewでユーザーエージェントを変更する方法をネットで調べて確かめたところどれもうまく行かず、以下の方法でうまくいきました。

NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Your desired user agent", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];


ただし、これはUIWebViewをallocする前に指定しなくてはいけないので以下のような指定になる

NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Your desired user agent", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
UIWebView *customWebView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];


NSDictionaryはオブジェクトをキー値と要素を対として保持する配列クラスです。

UIWebViewでUserAgentを変える方法 | エンジニア開発記
NSDictionary - iPhoneアプリ開発の虎の巻
posted by ねこまんま at 15:58
Comment(0) | TrackBack(0) | iPhone

iPhoneアプリのUIWebViewでJavaScriptを実行する方法

iPhoneアプリのUIWebViewでJavaScriptを実行する方法。

webViewDidFinishLoadイベントが発生した際にstringByEvaluatingJavaScriptFromStringでJSの文字列を実行してやればいいっぽい。

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *js = @"alert('ok');";
[webView stringByEvaluatingJavaScriptFromString:js];
}
posted by ねこまんま at 04:39
Comment(0) | TrackBack(0) | iPhone

2013年05月07日

iPhoneアプリにObjective-CでUIActionSheetを表示する方法

iPhoneアプリにObjective-CでUIActionSheetを表示する方法。

@interface ViewController : UIViewController
- (void)configureView;
- (void)actionOKCancel;
@end


- (void)configureView
{
UIButton *customButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
customButton.frame = CGRectMake(40, 100, 240, 40);
[customButton setTitle : @"アクションシート" forState:UIControlStateNormal];
[customButton addTarget:self action:@selector(actionOKCancel) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:customButton];
}
-(void)actionOKCancel
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"アクションシート"
delegate:self
cancelButtonTitle:@"いいえ"
destructiveButtonTitle:@"はい"
otherButtonTitles:nil, nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];
}
-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"%d",buttonIndex);
}
posted by ねこまんま at 02:20
Comment(0) | TrackBack(0) | iPhone

iPhoneアプリにobjective-cでUIAlertViewを表示する方法

iPhoneアプリにobjective-cでUIAlertViewつまりアラートを表示する方法

ヘッダーファイルは次のとおり

@interface ViewController : UIViewController
- (void)configureView;
- (void)alertOKCancel;
@end


メソッドファイルは次のとおり

UIButtonでボタンを配置し押された際にUIAlertViewを表示する。そしてアラートのボタンが押された際にその番号をNSLog()で書き出します。

- (void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
}
- (void)configureView
{
UIButton *customButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
customButton.frame = CGRectMake(40, 100, 240, 40);
[customButton setTitle : @"アラート" forState:UIControlStateNormal];
[customButton addTarget:self action:@selector(alertOKCancel) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:customButton];
}
-(void)alertOKCancel
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"アラート" message:@"よろしいですか" delegate:self cancelButtonTitle:@"いいえ" otherButtonTitles:@"はい", nil];
[alert show];
}
-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"%d",buttonIndex);
}
posted by ねこまんま at 01:58
Comment(0) | TrackBack(0) | iPhone

2013年05月05日

iPhoneアプリにobjective-cでUIWebViewを配置する方法

iPhoneアプリにobjective-cでUIWebViewを配置する方法。

- (void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
}
- (void)configureView
{
UIWebView *customWebView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 300, 300)];
customWebView.scalesPageToFit = YES;
[customWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://phprefa.seesaa.net/"]]];
[self.view addSubview:customWebView];
}


scalesPageToFitで指でのピンチインアウトを許可するか制御できる。
posted by ねこまんま at 02:29
Comment(0) | TrackBack(0) | iPhone

2013年05月01日

iPhoneアプリにobjective-cでUIPickerView /UIDatePickerView を配置する方法

iPhoneアプリにobjective-cでUIPickerView /UIDatePickerView いわゆるドラムロールを配置する方法。予想以上にめんどくさかった。それにくらべてHTMLって簡単で素晴らしい。

ヘッダーファイルは次のように記述

@interface ViewController : UIViewController
{
NSArray *pickerViewData;
}
- (void)configureView;
@end


これでUIPickerViewDelegateクラスとUIPickerViewDataSourceクラスが利用できるようになる

- (void)configureView
{
pickerViewData = [NSArray arrayWithObjects:@"ああ",@"いいい",@"ううう", nil];

UIPickerView *customPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0 ,10, 0, 0)];
customPickerView.showsSelectionIndicator = YES;
customPickerView.delegate = self;
[self.view addSubview:customPickerView];

UIDatePicker *customDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 236, 0, 0)];
customDatePicker.datePickerMode = UIDatePickerModeDateAndTime;
NSDate *today = [NSDate date];
customDatePicker.date = today;
[self.view addSubview:customDatePicker];

}


UIPickerViewとUIDatePickerで作ったドラムロールを配置。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}


numberOfComponentsInPickerViewで列数を指定

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [pickerViewData count];
}


numberOfRowsInComponentで行数を指定。ひとまず配列の長さを返しときます。

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 40.0;
}


rowHeightForComponentやピッカーの各項目の高さが指定できます。

 (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
CGFloat width = 0.0;
switch (component) {
case 0: {
width = 50.0;
break;
}
case 1: {
width = 250.0;
break;
}
}
return width;
}


widthForComponentでピッカーの項目の幅を指定


- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *string = @"";
switch (component) {
case 0: {
string = [NSString stringWithFormat:@"%d", row];
break;
}
case 1: {
string = [pickerViewData objectAtIndex:row];
break;
}
}
return string;
}


titleForRowで各項目の値を設定できます。
posted by ねこまんま at 23:50
Comment(0) | TrackBack(0) | iPhone

iPhoneアプリにObjective-CでUITextFieldを配置する方法

iPhoneアプリにObjective-CでUITextFieldいわゆる入力フィールドを配置する方法。

新しめの機能は「customTextField.delegate = self;」これで別メソッドの処理をテキストフィールドに実装できるらしい。よくわからんしXCodeがここで「warning: passing 'ViewController *const __strong' to parameter of incompatible type 'id' 」と警告をだす。ただ、これを記述すると下のtextFieldShouldReturnの処理がリターン押した際に実行され表示されたキーボードが消えます。

- (void)configureView
{
UITextField * customTextField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 300, 40)];
customTextField.placeholder = @"ほげほげ";
customTextField.borderStyle = UITextBorderStyleRoundedRect;
customTextField.delegate = self;
[customTextField addTarget:self action:@selector(action:) forControlEvents:UIControlEventEditingDidEnd];
[self.view addSubview:customTextField];
}


- (void)action:(id)sender
{
UITextField *tempSlider = sender;
NSLog(@"%@",tempSlider.text);
}


-(BOOL)textFieldShouldReturn : (UITextField *) textField
{
[textField resignFirstResponder];
return YES;
}
posted by ねこまんま at 03:45
Comment(0) | TrackBack(0) | iPhone

2013年04月30日

iPhoneアプリにObjective-CでUISlider を配置する方法

iPhoneアプリにObjective-CでUISlider を配置する方法

- (void)configureView
{ UISlider *customSlider = [[UISlider alloc] initWithFrame:CGRectMake(40, 160, 240, 40)];
customSlider.minimumValue = 0;
customSlider.maximumValue = 100;
customSlider.value = 50;
[customSlider addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:customSlider];

}


tempSlider.valueは少数の値が返ってくるので%f

- (void)action:(id)sender
{
UISlider *tempSlider = sender;
NSLog(@"%f",tempSlider.value);
}
posted by ねこまんま at 06:07
Comment(0) | TrackBack(0) | iPhone

iPhoneアプリにObjective-CでUISegmentedControlを配置する方法

iPhoneアプリにObjective-CでUISegmentedControlを配置する方法。UISegmentedControlとは要するにナビゲーションボタンです。

NSArrayは配列生成。Objective-Cでは最後のnilは必要です。NSArrayは途中で変更することができない型なので注意が必要

- (void)configureView
{
NSArray *segmentTextContext = [NSArray arrayWithObjects:@"たろう",@"はなこ",@"じろう",nil];
UISegmentedControl *customSegment1 = [[UISegmentedControl alloc] initWithItems:segmentTextContext];
customSegment1.frame = CGRectMake(40, 160, 240, 40);
customSegment1.segmentedControlStyle = UISegmentedControlStylePlain;
customSegment1.selectedSegmentIndex = 0;
[customSegment1 addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:customSegment1];
}


- (void)action:(id)sender
{
UISegmentedControl *tempSegment = sender;
NSLog(@"%d",tempSegment.selectedSegmentIndex);
}
posted by ねこまんま at 05:50
Comment(0) | TrackBack(0) | iPhone

2013年04月29日

iPhoneアプリにObjective-CでUISwitchを配置する方法

iPhoneアプリにObjective-CでUISwitchを配置する方法

headerファイル。引数の受け渡しがよくわかんらないけどこんな感じ。

@interface ViewController : UIViewController
- (void)configureView;
- (void)action:(id)sender;
@end


headerファイル。引数の受け渡しがよくわかんらないけどこんな感じ。

@interface ViewController : UIViewController
- (void)configureView;
- (void)action:(id)sender;
@end



- (void)configureView
{
UISwitch *customSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(120, 160, 0, 0)];
customSwitch.on = YES;
customSwitch.onTintColor = [UIColor blueColor];
[customSwitch addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:customSwitch];
}
- (void)action:(id)sender
{
UISwitch *tempSwitch = sender;
if(tempSwitch.on){
NSLog(@"スイッチオン");
}else{
NSLog(@"スイッチオフ");
}
}


UISwitch allocでUISwitchを作成して、onで初期値、onTintColorで色を指定。UIControlEventValueChangedでチェンジ時のイベントが指定できる。
posted by ねこまんま at 17:20
Comment(0) | TrackBack(0) | iPhone

iPhoneアプリにObjective-CでUIButtonを配置する方法

iPhoneアプリにObjective-CでUIButtonを配置する方法

ヘッダーファイル。

@interface ViewController : UIViewController
- (void)configureView;
- (void)action;
@end


メソッドファイル。ボタンが押されたらactionを実行

- (void)configureView
{
UIButton *customButton1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
customButton1.frame = CGRectMake(40, 160, 240, 40);
[customButton1 setTitle:@"ボタン" forState:UIControlStateNormal];
[customButton1 addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:customButton1];
}
- (void)action
{
NSLog(@"ボタンがおされました");
}


[]に包まれてる命令と包まれてない命令の違いなんだんだろ。

オリジナルの画象を使いたい場合はUIButtonTypeCustomを利用する。

- (void)configureView
{
UIButton *customButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
customButton2.frame = CGRectMake(40, 160, 240, 40);
[customButton2 setImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
[customButton2 setImage:[UIImage imageNamed:@"buttonDown.png"] forState:UIControlStateHighlighted];
[customButton2 addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:customButton2];
}


forState:UIControlStateNormalでボタン画象を、forState:UIControlStateHighlightedでボタンが押し下げられた際に画象が指定できる。

参考:iPhoneアプリ開発塾
posted by ねこまんま at 16:11
Comment(0) | TrackBack(0) | iPhone

PhoneアプリにObjective-CでUILabelを配置する方法

PhoneアプリにObjective-CでUILabelを配置する方法

- (void)configureView
{
UILabel *customLable = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 40)];
customLable.font = [UIFont fontWithName:@"HiraKakuProN-W6" size:18];
customLable.textColor = [UIColor blueColor];
customLable.text = @"テキスト";
customLable.textAlignment = UITextAlignmentCenter;
customLable.shadowColor = [UIColor grayColor];
customLable.shadowOffset = CGSizeMake(1.0, 1.0);
[self.view addSubview:customLable];
}


UILabel allocでUILabelを作成、fontでフィンとや文字サイズの情報、textでラベルのテキスト、textAlignmentでテキストの右寄せとかを制御できて、shadowColorやshadowOffsetでテキストシャドウの制御ができる。

参考:iPhoneアプリ開発塾
posted by ねこまんま at 15:39
Comment(0) | TrackBack(0) | iPhone