2014-10-08 68 views
-1

我正在制作一个非常简单的应用程序。我有一个计时器,当计时器超过5秒时,我想要显示一个图像。如果计时器不超过5秒,则图像应保持隐藏状态。问题是,我的图像出现在我的main.storyboard上,一旦定时器超过5秒,我似乎无法使其消失。任何帮助,将不胜感激!这里是我的代码:在Xcode中隐藏和显示图像

ViewController.h:

#import <UIKit/UIKit.h> 
int CountNumber; 
@interface ViewController : UIViewController 
{ 
    IBOutlet UILabel *TimerDisplay; 
    IBOutlet UIImageView *Images; 
    NSTimer *Timer; 
} 
-(void)TimerCount; 
-(IBAction)Start:(id)sender; 
-(IBAction)Stop:(id)sender; 
-(IBAction)Restart:(id)sender; 

@property (strong, nonatomic) IBOutlet UILabel *FirstiPhoneapp; 
@property (strong, nonatomic) IBOutlet UILabel *ByJ; 
@property (strong, nonatomic) IBOutlet UIButton *ClickToStart; 
@property (strong, nonatomic) IBOutlet UIButton *Reset; 
@property (strong, nonatomic) IBOutlet UIButton *Terminate; 
@property (strong, nonatomic) IBOutlet UIButton *Restart; 

@end

ViewController.m:

#import "ViewController.h" 

@interface ViewController() 
@end 

@implementation ViewController 

-(IBAction)Start:(id)sender 
{ 
    Timer = [NSTimer scheduledTimerWithTimeInterval:1 target: self selector:@selector(TimerCount) userInfo: nil repeats:YES]; 
} 

- (void)TimerCount { 
    CountNumber = CountNumber + 1; 
    TimerDisplay.text=[NSString stringWithFormat:@"%i", CountNumber]; 
} 

- (IBAction)UIImage:(id)sender { 
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Images.jpg"]]; 
    if (CountNumber < 6); 
    Images.hidden = YES; 
} 

- (IBAction)Stop:(id)sender{ 
    [Timer invalidate]; 
    TimerDisplay.text=[NSString stringWithFormat:@"%i", CountNumber]; 
} 

- (IBAction)Reset:(id)sender{ 
    CountNumber = 0; 
    [Timer invalidate]; 
    CountNumber = 0; 
    [Timer invalidate]; 
    TimerDisplay.text = [NSString stringWithFormat:@"%i", CountNumber]; 

    Timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(TimerCount) userInfo:nil repeats:YES];    
    [Timer invalidate];  
} 

- (IBAction)Restart:(id)sender{ 
    CountNumber = 0; 
    TimerDisplay.text = [NSString stringWithFormat:@"%i", CountNumber]; 
    CountNumber = 0; 
    Timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(TimerCount) userInfo:nil repeats: YES]; 

    if (CountNumber < 6); 
    Images.hidden = YES; 
} 

- (void)viewDidLoad 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
@end 

而且,出于某种原因,并在此的任何帮助将是有帮助,我得到一个错误[super viewDidLoad]; Xcode是说它“预期的方法体”。我一直在环顾四周,无法找到解决这个问题,任何人都可以帮我解决这个错误?

+1

即使代码不能编译,图像仍然出现?这是令人惊讶的。与c中一样,objective-c代码使用{花括号}分隔。这是viewDidLoad的问题。 – danh 2014-10-08 02:12:55

+0

您的代码质量确实很差 - 您的分号会导致不需要的行为。你也不应该重复相同的路线。 – Szu 2014-10-08 08:32:40

回答

1

首先更改下面的代码在方法“重新启动”和“UIImage的”

if (CountNumber < 6); 
Images.hidden = YES; 

if (CountNumber < 6){ 
    Images.hidden = YES; 
} 

当我想你是编程新手这里提示:约定是方法名称总是写得很小,所以在你的代码中应该是“重启”/“开始”而不是“重启”/“开始”。第二,如果我理解你的代码是正确的,那么你在概念上犯了一个错误。由您的计时器调用的方法是TimerCount。您必须将每个UI功能放在那里或从那里调用方法。这是每秒钟被调用的唯一方法。所以你应该把

if (CountNumber < 6){ 
     Images.hidden = YES; 
} 

检查那里。

+0

谢谢!是的,我是编程新手,我14岁,上周开始学习。谢谢您的帮助。 – Pearl 2014-10-13 22:59:39

0

您收到[super viewDidLoad];的错误,因为您忘记了护腕。