簡體   English   中英

NSTimer,當我回到ViewController時不會啟動

[英]NSTimer, wont start when i go back to the ViewController

我有一個NSTimer,它每25秒發出一次HTTP請求。 這工作正常,但是當我轉到另一個ViewController然后返回時。 它可能不起作用。 我究竟做錯了什么?

-(void)viewDidAppear:(BOOL)animated {

    timer = [NSTimer timerWithTimeInterval:26.0 target:self selector:@selector(sendRequestToGetData:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

}

的NSTimer

-(void)sendRequestToGetData:(NSTimer *)timer
{


NSDictionary *headers = @{},
*parameters = @{};

UNIHTTPJsonResponse *response = [[UNIRest get:
                                  ^(UNISimpleRequest* request) {
                                      [request setUrl:
                                       @"http://localhost/getfixture.php/fixtures"
                                       ];

                                      [request setHeaders:headers];
                                      [request setParameters:parameters];
                                  }] asJson];

NSData* rawBody = [response rawBody];
jsonResult = [NSJSONSerialization JSONObjectWithData: rawBody
                                             options: NSJSONReadingMutableContainers
                                               error: nil];

}

嘗試這個 :

NSTimer *myTimer; 

-(void)viewDidAppear:(BOOL)animated {    
   myTimer = [NSTimer scheduledTimerWithTimeInterval:26.0
        target:self
        selector:@selector(sendRequestToGetData:)
        userInfo:nil
        repeats:YES];
}

- (void)viewDidDisappear:(BOOL)animated{
   [myTimer invalidate];
   myTimer=nil;
}

您是否不應該從viewdiddisappear中的運行循環中刪除計時器? 從另一個視圖返回后,可能再次添加它會造成問題。

我將使用viewWillAppear viewDidLoad是您必須做一次的事情。 每當出現視圖時,都會調用viewWillAppear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM