繁体   English   中英

通过单击Xco​​de中的按钮添加多个秒表标签

[英]Adding the multiple stopwatch label by clicking the button in Xcode

我是使用Objective-C编程的Xcode的新手。 我有秒表程序。 我需要通过单击按钮添加多个秒表。 有什么办法吗?

我现有的代码在这里:

秒表视图控制器

#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

秒表视图控制器

     #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方法会做什么,请问有人为我提供了解决方案。 提前致谢...

如果我理解您的问题,我认为应该这样做:

首先,您必须将一个counter定义为int并在ViewDidLoad方法ViewDidLoad其赋值为0 ,然后将代码编辑为:

秒表视图控制器

#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

编辑

您必须为AddStopwatch:添加另一个UIButton AddStopwatch:方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM