gpt4 book ai didi

ios - 将数组从 RightChildViewController 传递到 MainVIewController

转载 作者:行者123 更新时间:2023-11-29 03:32:16 24 4
gpt4 key购买 nike

我在使用 SlidingViewController 时遇到问题。我的滑动 View Controller 有一个左 View Controller 、一个主视图 Controller 和一个右 View Controller 。我的左 View Controller 是一个菜单样式的 View Controller ,并将主视图 Controller 切换到所选的 View Controller 。右侧的 View Controller 是一个 TableView Controller ,它使用 NSUserDefault 键进行最近的搜索。这个键是一个包含 4 个字符串的数组。我遇到的问题是将这个字符串发送回主视图 Controller ,因为主视图 Controller 的 viewWillAppear 没有被调用,因为从技术上讲它永远不会离开屏幕(即它永远不会消失)。

我试图让 View Controller 手动调用 viewDidAppear,但似乎初始化主视图 Controller 会一起创建一个全新的 viewController,并且不会在主视图 Controller 内创建 tableView,因此不会加载重新加载 TableView 。此外,当我记录 tableView 时,它会显示为 (null)。

这里是LeftViewController的didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIStoryboard *iPhoneStoryBoard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
ViewController *viewController = (ViewController *)[iPhoneStoryBoard instantiateViewControllerWithIdentifier:@"HomePage"];
viewController.reloadArray = self.recentSearchesArray[indexPath.row];
NSLog(@"Recent ReloadArray: %@", viewController.reloadArray); //This prints out the correct information


/*
MenuViewController *menuViewController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
SlidingViewController *slidingViewController = [[SlidingViewController alloc] initWithNibName:@"SlidingViewController" bundle:[NSBundle mainBundle] mainViewController:viewController leftViewController:menuViewController andRightViewController:self];*/ //Tried doing this too, doesn't work


[viewController viewWillAppear:YES];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
[self performSelector@selector(toggleView)];

}

ViewController 的 viewWillAppear

-(void)viewWillAppear:(BOOL)animated
{
if(self.reloadArray.count !=0)
{
NSLog(@"Reload Array Not Empty!");
NSLog(@"ReloadArray: %@",self.reloadArray); // Logs out the correct information
[self.homePageTableView reloadData];
NSLog(@"Table: %@", self.homePageTableView); // Logs out as (null) :(

}
else
{
NSLog(@"Reload Array Is Empty");
}
}

有没有人有任何建议/想法,或者有没有人处理过类似的事情或遇到过这个问题?如果是这样,将不胜感激任何信息和指导。提前致谢!

最佳答案

您可以使用通知中心方法。在主视图 Controller 的 viewdidload 方法中编写以下代码..

[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(anymethod:)
name: anyname
object: nil];

- (void)anymethod:(NSNotification *)notification {
NSLog(@"%@", notification.userInfo);

}

并在您的右 View Controller 中传递如下数据,

[[NSNotificationCenter defaultCenter] postNotificationName:@"anyname" object:self userInfo:anydata];

关于ios - 将数组从 RightChildViewController 传递到 MainVIewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595589/

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