popToRootViewController 在 vi​​ewWillAppear 之前被调用

Posted

技术标签:

【中文标题】popToRootViewController 在 vi​​ewWillAppear 之前被调用【英文标题】:popToRootViewController is called before viewWillAppear 【发布时间】:2014-05-22 04:34:58 【问题描述】:

I have a UITableviewController and when a row is selected, I want to pop back to my rootViewController and have it display the text of the row in table view.现在发生的事情是在调用popToRootViewController 函数之前调用了我的常规视图控制器中的viewWillAppear,因此当它转到常规视图控制器时,它不会显示文本。我也尝试过使用viewDidAppear,但它不起作用。这是我尝试过的代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

    NSLog(@"row was selected");
    user[@"school"] = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"];
    [[PFUser currentUser] saveInBackground];
    [self.navigationController popToRootViewControllerAnimated:YES];

然后在常规视图控制器中:

- (void)viewWillAppear:(BOOL)animated

    NSLog(@"will appear ran");
    PFUser *currentUser = [PFUser currentUser];
    self.userSchoolLabel.text = currentUser[@"school"];

我在控制台看到的是打印出来的

"will appear ran"

然后 “已选择行”

我该如何解决这个问题,如果我通过触摸另一个视图控制器上的按钮调用 popToRootViewController 方法,它工作正常,问题在于选择一行,我不知道为什么?

提前感谢您的帮助。我真的很感激。

【问题讨论】:

它是基于 stroyboard 的应用程序吗? 您的要求:选择一行 -> popToRootView (RegularViewController)。但是,RegularViewController 的 viewWillAppear 先发生,didSelectRow 发生在后吗?对吗? 我认为您发布的代码中没有任何内容。也许 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中的某些东西? 你的单元格上是否有任何segues? 是的,这是基于故事板的应用程序,我也尝试过 viewDidAppear,但它会首先被调用,但它不应该调用它。不,我没有连接到单元格 【参考方案1】:

事件处理是委托方法的一部分。您的数据源似乎是正确的,因为它为您显示了该行。所以,可能是你没有正确设置你的 tableview 的委托。如果您使用的是 nib,则连接您的 tableview 的委托,或者如果您使用代码绘制 tableview,只需检查 _yourtable.delegate =self;设置与否。

另一个原因可能是,如果 tableview 单元格中有 uiview,那么它可以带走您的 rowselection 事件。

另外,如果你在 tableview 中设置启用编辑,它可能不会调用 didSelectRowAtIndex: 方法...详情见here

【讨论】:

我没有使用 nib,并且代理连接到 tableView,并且 tableview 单元格中没有子视图,只有文本,并且不可编辑。

以上是关于popToRootViewController 在 vi​​ewWillAppear 之前被调用的主要内容,如果未能解决你的问题,请参考以下文章

在 popToRootViewController 之后未调用 viewWillAppear 方法

从另一个选项卡调用 popToRootViewController

当 tableView 仍在滚动时 popToRootViewController 崩溃

popToRootViewController 前进动画

popToRootViewController 在导航栏上带来最后一个视图

单击按钮时的poptorootviewcontroller