0

Objective-C プログラミングを使用した Xcode は初めてです。私はストップウォッチプログラムを持っています。ボタンをクリックして複数のストップウォッチを追加する必要があります。それを行う方法はありますか?

私の既存のコードはここにあります:

stopwatchviewcontroller.h

#import <UIKit/UIKit.h>

@interface StopWatchViewController : UIViewController {

    UILabel *stopWatchLabel;
    IBOutlet UIButton *btnStartStop;
    NSTimer *stopWatchTimer; // Store the timer that fires after a certain time
    NSDate *startDate; // Stores the date of the click on the start button
}
  @property (nonatomic, retain) UIButton *btnStartStop;
  @property (nonatomic, retain) IBOutlet UILabel *stopWatchLabel;
- (IBAction)onStartPressed:(id)sender;
- (IBAction)onStopPressed:(id)sender;
- (IBAction)AddStopwatch:(id)sender;

@end

stopwatchviewcontroller.m

     #import "StopWatchViewController.h"

        @implementation StopWatchViewController
        @synthesize stopWatchLabel;

        - (void)dealloc
        {
            [stopWatchLabel release];
            [super dealloc];
        }

        - (void)didReceiveMemoryWarning
        {
            // Releases the view if it doesn't have a superview.
            [super didReceiveMemoryWarning];

            // Release any cached data, images, etc that aren't in use.
        }

        #pragma mark - View lifecycle

        /*
        // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
        - (void)viewDidLoad
        {
            [super viewDidLoad];
        }
        */

        - (void)viewDidUnload
        {
            [self setStopWatchLabel:nil];
            [super viewDidUnload];
            // Release any retained subviews of the main view.
            // e.g. self.myOutlet = nil;
        }

        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
        {
            // Return YES for supported orientations
            return (interfaceOrientation == UIInterfaceOrientationPortrait);
        }

        - (void)updateTimer
        {
            NSDate *currentDate = [NSDate date];
            NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
            NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            [dateFormatter setDateFormat:@"HH:mm:ss.SSS"];
            [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
            NSString *timeString=[dateFormatter stringFromDate:timerDate];
            stopWatchLabel.text = timeString;
            [dateFormatter release];
        }

        - (IBAction)onStartPressed:(id)sender {
    if ([[btnStartStop titleForState:UIControlStateNormal] 
    isEqualToString:@"Start Clock"])

{
            startDate = [[NSDate date]retain];

            // Create the stop watch timer that fires every 10 ms
            stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
                                                              target:self
                                                            selector:@selector(updateTimer)
                                                            userInfo:nil
                                                             repeats:YES];

                  [btnStartStop setTitle:@"Stop Clock" forState:UIControlStateNormal];
        }
 else
{
    //---stop the timer---
        [timer invalidate];

        //---change the caption back to "Start Clock"---
        [btnStartStop setTitle:@"Start Clock" forState:UIControlStateNormal];
    }
}

     - (IBAction)AddStopwatch:(id)sender {

    }
        @end

Addstopwatch メソッドで何ができるかわかりません。だれかがその解決策を提供してくれます。前もって感謝します...

4

1 に答える 1

0

あなたの質問を理解したら、これでうまくいくはずです:

まず、メソッドでcounterasを定義intし、値を指定する必要があります。コードを次のように編集します。0ViewDidLoad

stopwatchviewcontroller.h

#import <UIKit/UIKit.h>

@interface StopWatchViewController : UIViewController {

UILabel *stopWatchLabel;
IBOutlet UIButton *btnStartStop;
IBOutlet UIButton *btnAddStopWatch;
NSTimer *stopWatchTimer; // Store the timer that fires after a certain time
NSDate *startDate; // Stores the date of the click on the start button
int counter;
}
  @property (nonatomic, retain) UIButton *btnStartStop;
  @property (nonatomic, retain) UIButton *btnAddStopWatch;
  @property (nonatomic, retain) IBOutlet UILabel *stopWatchLabel;
 - (IBAction)onStartPressed:(id)sender;
 - (IBAction)onStopPressed:(id)sender;
 - (IBAction)AddStopwatch:(id)sender;

@end

stopwatchviewcontroller.m #import "StopWatchViewController.h"

    @implementation StopWatchViewController
    @synthesize stopWatchLabel;

    - (void)dealloc
    {
        [stopWatchLabel release];
        [super dealloc];
    }

    - (void)didReceiveMemoryWarning
    {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];

        // Release any cached data, images, etc that aren't in use.
    }

    #pragma mark - View lifecycle

    /*
    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    */

    - (void)viewDidUnload
    {
        [self setStopWatchLabel:nil];
        [super viewDidUnload];
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
        counter = 0;
    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }

    - (void)updateTimer
    {
        NSDate *currentDate = [NSDate date];
        NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
        NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"HH:mm:ss.SSS"];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
        NSString *timeString=[dateFormatter stringFromDate:timerDate];
        stopWatchLabel.text = timeString;
        [dateFormatter release];
    }

       - (IBAction)onStartPressed:(id)sender {
if ([[btnStartStop titleForState:UIControlStateNormal] 
  isEqualToString:@"Start Clock"])

{
        startDate = [[NSDate date]retain];

        // Create the stop watch timer that fires every 10 ms
        stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
                                                          target:self
                                                        selector:@selector(updateTimer)
                                                        userInfo:nil
                                                         repeats:YES];

              [btnStartStop setTitle:@"Stop Clock" forState:UIControlStateNormal];
    }
 else
{
//---stop the timer---
    [timer invalidate];

    //---change the caption back to "Start Clock"---
    [btnStartStop setTitle:@"Start Clock" forState:UIControlStateNormal];
}
}
  - (IBAction)AddStopwatch:(id)sender {
    counter+= 50;
    UILabel *sL = [[UILabel alloc]initWithFrame:CGRectMake(0, stopWatchLabel.frame.origin.y+counter, 320, 40)];
    sL.backgroundColor = [UIColor clearColor];
    sL.textAlignment = UITextAlignmentCenter;
    sL.text =  stopWatchLabel.text;
    sL.textColor = [uiColor blackColor];
    [self.view addSubview:sL];

}

    @end

編集

メソッドUIButton用に別のものを追加する必要がありますAddStopwatch:

于 2012-10-10T06:43:15.917 に答える