gpt4 book ai didi

ios - 如何将数据传递到容器 View 中的 View Controller ?

转载 作者:行者123 更新时间:2023-11-29 00:56:15 25 4
gpt4 key购买 nike

我只是 iOS 编程的新手。

我最近遇到了一个棘手的问题。场景是:我现在有一个 UIViewController(假设它称为 A),它包含一个容器 View ,该容器 View 包含一个 UITableViewController(我们称之为 B)。当我在 UIViewController 中按下 UIButton 时,我想简单地将一个 NSMutableArray 从 A 传递到 B。然而,由于嵌入 segue 的设计使 UITableViewController 的 viewDidLoad 方法在 UIViewController 加载后立即执行。

有人知道在这种情况下传递数据吗?只是想知道...

更新:【两位VC的 Storyboard】[1]

enter image description here

最佳答案

任何你不能像这样简单地在你的 prepareForSegue 方法中传递它的原因:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.identifier {

case "tableViewController"?:
if let tableViewVC = segue.destinationViewController as? TableViewVC {
tableViewVC.myArray = passedArray
} ...

Oh - obj-c 在伪代码中会是这样的:

- (void)prepareForSegue:(NSStoryboardSegue*)segue sender:(id)sender {

if ([[segue identifier] isEqualToString:@"tableViewController"]) {

NSViewController *vc = [segue destinationController];
if ([vc isKindOfClass:[tableViewVC class]]) {
tableViewVC.myArray = passedArray;

没看到你的标签:]

编辑:这是通过通知传递的内容的粗略切割:在您的 UIViewController 的 header 中声明:

#define nArrayReadyNotification @"ArrayReadyNotification"

在您的 UIViewController 的 .m 文件中,一旦应该发送数组就发送通知:

[[NSNotificationCenter defaultCenter] postNotificationName: nArrayReadyNotification object:ARRAY];

在您的 tableView 的 viewDidLoad 中注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(arrayReceived:) name: nArrayReadyNotification object:nil];

这将是您 TableView 中的 arrayReceived 方法:

- (void) arrayReceived:(NSNotification *)notificaiton {

NSArray *array = [notificaiton object];
if (array != nil) {

...
}

最后在 dealloc 中取消注册你的 TableView :

- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];

这应该会在您需要的任何时候发送 - 可能会关闭计时器。不过,我更喜欢 KVO。

关于ios - 如何将数据传递到容器 View 中的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604823/

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