2014-10-08 2 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

+0

코드가 실제로 품질이 낮습니다. 원하지 않는 동작을 일으키는 세미콜론이 있습니다. 또한 같은 줄을 반복해서는 안됩니다. – Szu

답변

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

0

브레이커를 잊었으므로 [super viewDidLoad];에 오류가 발생합니다.