• 締切済み

@interface FirstViewController :UIV

@interface FirstViewController :UIViewController { NSMutableString *Mixbox; } -(IBAction)testtime:(id)sender; m. - (void)viewDidLoad { [super viewDidLoad]; MixBox = [NSMutableString string]; [MixBox retain]; } (IBAction)testtime:(id)sender{ NSString *Time=@"1回目の時間\n "; NSDate *Date=[NSDate date];//時間の設定 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateFormat:@"yyyy:MM:dd::hh:mm:ss"]; NSString *Str = [formatter stringFromDate:Date]; [Mixbox appendString:Time]; [Mixbox appendString:str]; self.flowView.text=Mixbox; } //Mixboxに代入した文字を他のアクションで、文字をつなげるようにするにはどうしたらいいですか? <例> ボタンを押す→トリガーされtesttimeが実行させる 表示のイメージ 1回目の時間:000000 2回目、違うボタンを押す→違うアクションが同じようにトリガーされ実行する 表示のイメージ 1回目の時間:00000000//これは前回押したもの 2回目の時間:00000000//今おしたもの このようなイメージでしたいのですが、何度やっても、代入で代入されますから、前回押して代入された文字列は消えてしまいます。 どうしたら前回のが消えずに、他のアクションで代入されたやつをそのあとに代入するにはどうしたらいいでしょうか? 本当に困っているので助けて下さい。お願い致します。

みんなの回答

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

細かなミスがいくつかありますが、ご呈示なされた「- (IBAction)testtime:(id)sender」で、問題ありません。 ミスを捜し出して、すべて修正すれば、ちゃんと動くのではありませんか? ※変数とインスタンス(オブジェクト)名は、小文字から始めましょう。それがObjective-Cの規則です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Objective-C[NSMutableStringクラスについて]

    Objective-C[NSMutableStringクラスについて] はじめまして。 NSMutableStringクラスで宣言したインスタンスをどこからでも呼び出したいと思い 以下のコードを作りました。 NSMutableString extern *Mixbox; -(IBAction)TestTime:(id)sender{ NSString *Time=@"ただいまの時間\n "; NSDate *date=[NSDate date];//時間の設定 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateFormat:@"yyyy:MM:dd::hh:mm:ss"]; NSString *str = [formatter stringFromDate:date]; [Mixbox appendString:str]; [Mixbox appendString:Time]; self.flowView.text=(@"%@",Mixbox); } ビルドするとエラーになります。 どこからでもインスタンスを呼び出したい場合どのようにすれば良いのでしょうか? 回答をお願いします。

  • サンプルコードのエラーについて

    インターネットのサンプルを見ながら作成したコードが、エラーになります。なにか間違いがあれば指摘して頂きたく、以下にコードを記載しました。どなたか教えていただけますと幸いです。宜しくお願い致します。 #import "CounterViewController.h" @implementation CounterViewController -(IBAction)calc{ NSDate*targetDate = datePicker.date; NSDate*today = [NSDate date]; NSCalendar*gregorian =[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSUInteger unitFlags; unitFlags = NSDayCalendarUnit; NSDateComponents*components = [gregorian components:today toDate:targetDate options:0]; NSInteger days; days = [components day]; resultLabel.text =[NSString stringWithFormat:@"%d",days; [gregorian release];

  • Objective-Cの条件分岐についてお伺いしたい事があります。

    Objective-Cの条件分岐についてお伺いしたい事があります。 ボタンの名前をcurrentTitleプロパティで取得し、その名前を元に条件分岐処理を行いたく、下記の通りコードを書いているのですが、真の条件に適合しません。 コードの書き方が悪いんでしょうか?最近Objective-Cの勉強を始めたばかりで右も左も分からない状態です。どなたかご教授いただけないでしょうか? -(action) action: (id)sender; { UIButton* button = sender NSString * Str = button.currentTitle; if (str == @"ボタンの名前") {   条件が真の場合の処理 } }

  • iPhone開発について(変数)

    初歩的な質問ですが、お願い致します。 iPhoneでボタンを触っている時間を取得したいのですが 思い通りに動きません。 ソースを掻い摘んで引用致します。 #import "APPNAMEViewController.h" NSDate *startTap; - (IBAction)tapBtn_down{ startTap = [NSDate date]; } - (IBAction)tapBtn_up{ NSLog(@"%f",[startTap timeIntervalSinceNow]); } 上記のような感じで作成しております。 ボタンをアップしたときに、EXC_BAD_ACCESSのエラーになってしまいます。 基本的なところで、お恥ずかしいですがよろしくお願い致します。 また、タップ時間の計測でサンプルソースのあるページや もっと頭のいいやり方がありましたら、ご教授いただけますと幸いです。 よろしくお願い致します。

  • ボタンのtagの番号を値渡しする方法について

    今、xcodeでiphoneやipad用のアプリを作っています。 VIewController(VC)に30個くらいのボタンを置き、そのボタンのタグ番号に合わせて、SecondVIewContorller(SVC)で、画像がでてきて、それをタップしたら、次の画像へ移動するというようにしたいのですが、VCのボタンのタグ番号をSVCに送ろうとするところでひっかかっています。もし何かご助言が頂けたら誠に幸いです。よろしくお願いします。 以下、自分なりにつくったコードです。 <VCの実装> - (IBAction)pushBtn:(UIButton *)sender { [self performSegueWithIdentifier:@"mySegue" sender:self];} -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualToString:@"mySegue"]){ secondViewController*viewcon=segue.destinationViewController; viewcon.Number=[NSString stringWithFormat:@"%d",[sender tag]]; } これをSVCに送ってタグ番号をつけたいのですが、 以下の上から五行目のところの書き方のところでエラーがでてますが、他の書き方が わかりません。 <SVCの実装> - (void)viewDidLoad { [super viewDidLoad]; UIImage*imageDate=[UIImage imageNamed:@"%d,png",_Number]; CGRect rect=CGRectMake(0,0 ,200,200); UIImageView*imageView=[[UIImageView alloc]initWithFrame:rect]; imageView.image=imageDate; imageView.contentMode=UIViewContentModeScaleAspectFit; imageView.center=self.view.center; [self.view addSubview:imageView];} xcodeのバージョンは、5,0です。 重ね重ねよろしくお願いします。

  • iPhone アプリ開発で困っています。

    iPhone のアプリ開発をXcodeで行っていますが、viewに作ったTextFieldに入力された文字列を、同じview上の別のTextFieldに表示するということが出来ません。 下のリストで、ビルドをするとエラーにはならないのですが、シミュレーターで文字列を入力すると、別のTextFieldに文字列が表示されることなくプログラムが停止してアイコン画面に戻ってしまいます。(コメントにしている部分は、きちんと動きます。) 基本的なことが分かっていないのだと思いますが、いろいろな参考書を調べたり、ネットで検索しても分からないので、よろしくお願いします。 (myOutlet1 と myOutlet2 を、それぞれのTextFieldに接続しています。また、myAction1 をボタンにタッチアップインサイドで接続しています。) @implementation rensyuuViewController - (IBAction)myAction1:(id)sender { NSString *str = [myOutlet1 stringValue]; [myOutlet2 setText:[NSString stringWithFormat:@"%@",str]]; /* int a = [[myOutlet1 text] intValue]; a = a * 3; [myOutlet2 setText:[NSString stringWithFormat:@"%d",a]]; */ } @end

  • swiftでストップウォッチに計算機能を追加

    swiftでストップウォッチアプリを作りました。 そのアプリに以下の機能を追加しようと思います。 一つの作業が完了するまでの時間(秒)を計測した上で、 その時間をもとに1時間あたりではいくつの作業が完了するのか、 計算して画面に表示させる機能。 (計算式:3600 / 計測した秒数 = 1時間あたりの作業数) どのように書けば、上記のような機能を追加できるでしょうか? 現状のソースコードは以下のようになります。 import UIKit class ViewController: UIViewController { @IBOutlet weak var timerLabel: UILabel! @IBOutlet weak var startButton: UIButton! @IBOutlet weak var stopButton: UIButton! @IBOutlet weak var resetButton: UIButton! @IBOutlet weak var page: UILabel! var startTime: NSTimeInterval? = nil var timer: NSTimer? var elapsedTime: Double = 0.0 override func viewDidLoad() { super.viewDidLoad() setButtonEnabled(true, stop: false, reset: false) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func setButtonEnabled(start:Bool, stop:Bool, reset:Bool) { self.startButton.enabled = start self.stopButton.enabled = stop self.resetButton.enabled = reset } func update() { if let t = self.startTime { let time: Double = NSDate.timeIntervalSinceReferenceDate() - t + self.elapsedTime let sec: Int = Int(time) let msec: Int = Int((time - Double(sec)) * 100.0) self.timerLabel.text = NSString(format: "%02d:%02d:%02d", sec/60, sec%60, msec) as String } } @IBAction func startTimer(sender: AnyObject) { setButtonEnabled(false, stop: true, reset: false) self.startTime = NSDate.timeIntervalSinceReferenceDate() // 2001/1/1 0:0:0 self.timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("update"), userInfo: nil, repeats: true) } @IBAction func stopTimer(sender: AnyObject) { setButtonEnabled(true, stop: false, reset: true) if let t = self.startTime { self.elapsedTime += NSDate.timeIntervalSinceReferenceDate() - t self.timer?.invalidate() self.timer = nil } } @IBAction func resetTimer(sender: AnyObject) { setButtonEnabled(true, stop: false, reset: false) self.elapsedTime = 0.0 self.startTime = nil self.timerLabel.text = "00:00:00" } }

    • ベストアンサー
    • Swift
  • xcodeで配列を保存する方法を教えてください

    初めまして。 うん十年ぶりにプログラミングに取り組んでいる、ccode初心者です。 ボタンを押すと、その時点の日付を取得して配列として保存するアプリを作っております。 ですが、変数の設定が悪いのか、MutableArray変数(_kitaku)をインスタンス変数で宣言すると、UserDefaultsで読み込んだ際に、読み込んだデータを取り込むことが出来ず、 ローカル変数で宣言すると、取得した日付を配列として保持することが出来ません。 おそらく変数の宣言の仕方かと思いますが、 どなたか、解決策を教えていただければ幸いです。 ちなみに、現在作成中のコードは下記の通りとなります。 よろしくお願いいたします。 ----- #import "OWBViewController.h" @interface OWBViewController () { //配列宣言 NSMutableArray *_kitaku; } //帰宅時間を取得するボタン @property (weak, nonatomic) IBOutlet UIButton *GetTime; //帰宅時間を取得するメソッド - (IBAction)GetTime:(id)sender; //時刻を保存するメソッド - (void)saveTime; @end @implementation OWBViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 保存した時間を読み込む NSUserDefaults *Rireki = [NSUserDefaults standardUserDefaults]; NSMutableArray *_kitaku = [Rireki objectForKey:@"kitaku"]; // ブレークポイント NSLog(@"過去結果配列 %@",_kitaku); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)saveTime { //保存 NSUserDefaults *Rireki = [NSUserDefaults standardUserDefaults]; [Rireki setObject:_kitaku forKey:@"kitaku"]; BOOL successful = [Rireki synchronize]; if (successful) { NSLog(@"%@", @"データの保存に成功しました。"); } } - (IBAction)GetTime:(id)sender { //NSMutableArray *_kitaku; NSDate *kitaku = [NSDate date]; if(!_kitaku){ _kitaku = [[NSMutableArray alloc] init]; } [_kitaku insertObject:kitaku atIndex:0]; NSLog(@"帰宅時間 %@", kitaku); NSLog(@"帰宅時間配列 %@", _kitaku); [self saveTime]; } @end

  • iPhoneのアプリ開発についてお伺い致します。

    Xcodeの実装をお伺いしたいのですが,あるアプリ開発の本を参考にして、クイズアプリをつくりました。クイズの問題、選択肢のデータファイルはテキストファイルでResourceに作成します。問題文をテキストビューに、選択肢をボタンに記載し、選択肢のボタンを押す事で回答させるシステムです。正解のボタンをタップすると、ボタンの文字の先頭に○を、不正解だと×を表示するのですが、これに、不正解時に正解のボタンの先頭に★等の印をつける為のソースコードをご教示いただければ幸いです。因に、テキストファイルには、1行目;問題文、2行目;正解の選択肢、3~5行目;不正解の選択肢、となっております。 //選択肢のボタンがタップされたときの処理 - (IBAction)answer:(id)sender { //正解か不正解かを見せる間、タップできない様に、ボタンを無効表示に変更する。 self.answerButton1.enabled = NO; self.answerButton2.enabled = NO; self.answerButton3.enabled = NO; self.answerButton4.enabled = NO; //タップされたボタンのラベルを取得する NSString *str = [[sender titleLabel] text]; //出題された問題の情報を取得する QuizItem *item = [self.quiz.usedQuizItems lastObject]; //正解か判定する if ([item checkIsRightAnswer:str]) { //正解なので、○を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"○ %@", str] forState:UIControlStateNormal]; //効果音を再生する AudioServicesPlaySystemSound(_rightSound); } else { //不正解なので×を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"× %@", str] forState:UIControlStateNormal]; }

    • 締切済み
    • Mac
  • iPhoneのアプリ開発についてお伺い致します。

    Xcodeの実装をお伺いしたいのですが,あるアプリ開発の本を参考にして、クイズアプリをつくりました。クイズの問題、選択肢のデータファイルはテキストファイルでResourceに作成します。問題文をテキストビューに、選択肢をボタンに記載し、選択肢のボタンを押す事で回答させるシステムです。正解のボタンをタップすると、ボタンの文字の先頭に○を、不正解だと×を表示するのですが、これに、不正解時に正解のボタンの先頭に★等の印をつける為のソースコードをご教示いただければ幸いです。因に、テキストファイルには、1行目;問題文、2行目;正解の選択肢、3~5行目;不正解の選択肢、となっております。 //選択肢のボタンがタップされたときの処理 - (IBAction)answer:(id)sender { //正解か不正解かを見せる間、タップできない様に、ボタンを無効表示に変更する。 self.answerButton1.enabled = NO; self.answerButton2.enabled = NO; self.answerButton3.enabled = NO; self.answerButton4.enabled = NO; //タップされたボタンのラベルを取得する NSString *str = [[sender titleLabel] text]; //出題された問題の情報を取得する QuizItem *item = [self.quiz.usedQuizItems lastObject]; //正解か判定する if ([item checkIsRightAnswer:str]) { //正解なので、○を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"○ %@", str] forState:UIControlStateNormal]; //効果音を再生する AudioServicesPlaySystemSound(_rightSound); } else { //不正解なので×を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"× %@", str] forState:UIControlStateNormal]; }