gpt4 book ai didi

ios - 如何使 UISplitViewController 的详细 View Controller 和主视图 Controller 之间的 View 刷新?

转载 作者:行者123 更新时间:2023-12-01 18:43:54 26 4
gpt4 key购买 nike

我有一个 Split View Controller ,其中任一侧都有 TableView ,并且每次在任一侧发生某些交互时都需要重新加载表数据。每当在 Split View Controller 的左侧(主)上选择一个单元格时,我已经实现了委托(delegate)来更新我的详细 View Controller 。

1.我想知道我是否需要实现另一个委托(delegate)以使其以两种方式发生(即更新主视图时)或者是否有任何通用方法。

2.我已经为这两个类编写了代码,所以发生的情况是,当我选择左侧的单元格时,右侧会通过委托(delegate)方法重新加载/刷新 View 进行更新,但是 viewWillAppear/viewDidAppear/viewWillDisapper 等方法是不叫。我现在从左侧单元格选择时触发的委托(delegate)方法手动调用 viewWillAppear 方法。我是否缺少一种技术,以便自动调用类方法。或者谁能​​指出使用 splitViewController 的最佳方法?

最佳答案

首先,从您的代码中调用 viewWillAppear 等可能不是一个好主意,因为这些行为将来可能会发生变化。 (例如,在早期的 iO​​S 版本中,viewDidLoad 曾经被多次调用,现在每个实例调用一次)。您可以将代码移动到单独的方法中。

其次,您可能希望将 NSNotification 视为传达更改的一种方式。这很容易,并且不需要您保留任何委托(delegate)指针。

例如,您可以添加到 subview Controller .h:

#define MASTER_UPDATED  @"MasterUpdated"
#define DETAIL_UPDATED @"DetailUpdated"

然后在主 Controller 中类似:
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(updateFromDetail:) name:DETAIL_UPDATED object:nil];

...

-(void)updateFromDetail:(NSNotification *)no
{
NSDictionary *nd = [no userInfo]; // get relevant information

// take action....
}

从细节方面来看,当一个项目被点击时,你会发送如下消息:
NSDictionary *userInfo = @{@"somekey":@"somevalue", @"anotherkey":@"anothervalue"};

[[NSNotificationCenter defaultCenter] postNotificationName:DETAIL_UPDATED
object:self userInfo:userInfo];

关于ios - 如何使 UISplitViewController 的详细 View Controller 和主视图 Controller 之间的 View 刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com