簡體   English   中英

推送和彈出視圖控制器

[英]Pushing and Popping View Controllers

我有一個導航視圖控制器,它是一個表格視圖,如果我選擇一行,則從表格視圖進入詳細視圖頁面。 當我轉到詳細信息視圖頁面時,我從服務器中檢索了一些信息,如果服務器沒有響應,那么我會彈出一個警報視圖,該視圖出現在父導航視圖的前面。 現在,當在警報視圖上按OK並單擊另一行時,它確實進入了我的“ didselectview”方法,但沒有進入我的詳細信息頁面。 誰知道為什么? 代碼如下。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Navigation logic may go here. Create and push another view controller.
Item *selectedItem = (Item *)[self.fetchedObjectsArray objectAtIndex:indexPath.row];
NSString * urlString = [CONST_FEED_DISCRIPTION_URL stringByAppendingString:selectedItem.guid];
NSDate * dateString = selectedItem.date;
JsonViewController *jsonViewController = [[JsonViewController alloc] initWithURLString:urlString date:dateString];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                                                               style:UIBarButtonItemStyleBordered
                                                              target:nil
                                                              action:nil];
self.navigationItem.backBarButtonItem = backButton;
self.navigationController.navigationBar.tintColor = [UIColor colorWithHexString:CONST_NAVIGATIONBAR_COLOR];
[self.navigationController pushViewController:jsonViewController animated:YES];
[backButton release];
[jsonViewController release];
}

您第一次獲得警報視圖(這是一條錯誤消息)。 之后,當您單擊一行時,沒有任何反應。 但我知道它進入下面給出的方法。 誰知道為什么? 推動觀點與我有關系嗎? 而不是彈出?

將推送推遲到下一個runLoop,以使tableView返回:

dispatch_async(dispatch_get_main_queue(), ^ {
    NSLog(@"Going to push...");
    NSLog(@"...view Controller %@", jsonViewController);
    [self.navigationController pushViewController:jsonViewController animated:YES];
    [jsonViewController release];
    NSLog(@"Just pushed %@", jsonViewController);
) );

為了清楚起見,請從現有代碼中刪除這兩行:

[self.navigationController pushViewController:jsonViewController animated:YES];
[jsonViewController release];

暫無
暫無

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

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