VC1將VC2嵌入到容器視圖中。 VC2是一個表格VC。呈現和嵌入式視圖控制器之間的交互
在VC2中單擊一個單元會推動VC3。
VC3將VC4嵌入到容器視圖中。
我試過self.parentViewController.presentingViewController.parentViewController
和self.parentViewController.presentingViewController
但他們似乎沒有工作。
但後來我決定看看它是否會工作,當我使用委託來存儲對VC1的引用,並仍然爲VC1上的所有公共屬性爲空。在這種情況下VC1不會在內存中嗎?如果不是,爲什麼不呢?如果是這樣,爲什麼其(強)屬性爲空?
編輯:我也剛剛通過NSLogs發現,VC4中的viewDidLoad
在執行並設置委託引用完成之前執行didSelectRowAtIndexPath
之前執行,這可以解釋爲什麼該方法不起作用。我如何確保下一個VC只在didSelectRowAtIndexPath
的所有其他行完成時才被推送?無論如何,在選擇一行之前,VC1上還有其他的公共屬性(不是空值)(我剛剛在VC2的didSelectRow
中用NSLog驗證了這一點),並且當我試圖將它們變爲空時通過任何方法通過VC4訪問它們。
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
// set reference to selected convo. it is stored in ConversationsParentVC public property
self.conversationsParentVC.selectedConvo = self.conversationsParentVC.conversationsArray[indexPath.row];
// temp
AppDelegate *delegate = getAppDelegate;
delegate.activeVC = self.conversationsParentVC;
ConversationsParentVC *convosParentVC = (ConversationsParentVC*)delegate.activeVC;
NSLog(@"boop %@", delegate.activeVC);
NSLog(@"beep %i", convosParentVC.conversationsArray.count);
}
發佈你的'tableView:didSelectRowAtIndexPath:'源代碼。 –
@robmayoff並不多,但我已經發布了它。謝謝參觀。 – mkc842
你在使用故事板嗎?當調用VC4的'viewDidLoad'時什麼是堆棧跟蹤? –