10.0秒後に起動されたtimerを作成し、NSTimerインスタンスへのポインタであるselfのtargetMethod:を呼び出します。このタイマーは、関連付けられたviewcontroller画面がビューにあるときにのみ有効です。タイマーはUIをブロックするため、PhotoView.xibという.xibファイルをロードしています。しかし、PhotoView.xibがViewControllerから削除/解除されたときにタイマーを再起動する方法はわかりません。 誰かが、parentViewcontrollerから.xibが削除されたときに、(parentViewcontrollerの)タイマーを再起動する方法を教えてもらえますか?UIView.xibがios 9で終了したときに、スケジュールされたNSTimerをUIViewControllerで再起動するには?
SampleView.h
#import <UIKit/UIKit.h>
@interface SampleView : UIView
@property(nonatomic,retain)IBOutlet UIView* view;
@property(nonatomic,retain)IBOutlet UIImageView* imageview;
@property(nonatomic,retain)IBOutlet UIButton* dismissButton;
@end
SampleView.m
#import "GroupPhotoView.h"
@implementation SampleView
@synthesize imageview,view,dismissButton;
-(IBAction) dismissView: (id) sender{
[self removeFromSuperview];
}
@end
SampleViewController.h
#import <UIKit/UIKit.h>
@interface SampleViewController : UIViewController
@property(nonatomic,retain)NSTimer *timer;
@end
SampleViewController.m
#import "SampleViewController.h"
@interface SampleViewController()
@end
@implementation SampleViewController
@synthesize timer;
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)viewDidAppear:(BOOL)animated{
self.timer=[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(sampleMethod:) userInfo:nil repeats:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
//stop the timer when SampleVC is not in the view
if ([self.timer isValid])
{
[self.timer invalidate];
self.timer=nil;
}
}
- (IBAction)displayAction:(id)sender
{
[self loadSampleImage];
}
-(void)loadSampleImage:(UIImage*)aImage{
if ([self.timer isValid])
{
[self.timer invalidate];
self.timer=nil;
}
SampleView *customView =(SampleView *)[[[NSBundle mainBundle] loadNibNamed:@"PhotoView" owner:self options:nil] objectAtIndex:0];
customView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8];
customView.imageview.image=[UIImage imageNamed:@"cs"];
[customView setFrame:self.view.frame];
[self.navigationController.view addSubview:customView];
}
}
@end
ありがとうございます。
ありがとう:) @Siddhesh Mhatre – sarita