[英]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.