gpt4 book ai didi

iOS 访问 parentViewController 中的属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:11:37 24 4
gpt4 key购买 nike

当尝试访问我的 parentViewController 中的方法时,我的应用程序崩溃了。这是 StoryBoard 中的布局

enter image description here

MainViewController = STLMMainViewController (ParentViewController)

场景 1 = STLMTimeDateViewController (ChildViewController)

这是 STLMTimeDateViewController 的代码

#import "STLMTimeDateViewController.h"
#import "STLMMainViewController.h"

@interface STLMTimeDateViewController ()
@property (nonatomic, strong) STLMMainViewController *stlmMainViewController;
@end


- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"The name of the controller %@",self.navigationController.parentViewController);

stlmMainViewController= (STLMMainViewController *) self.parentViewController;
[stlmMainViewController locationButtonSelected]; // This is where the App crashes
NSLog(@"TimeDateController");
}

应用程序运行,但是当调用 STLMMainViewController 时,应用程序崩溃并出现以下错误:

2013-02-10 16:33:57.422 MyApp[9120:c07] The name of the controller <STLMMainViewController: 0x83850d0>
2013-02-10 16:33:57.434 MyApp[9120:c07] -[UINavigationController locationButtonSelected]: unrecognized selector sent to instance 0x8371a70

如果我删除以下行:

stlmMainViewController = (STLMMainViewController *) self.parentViewController;

然后离开

[stlmMainViewController locationButtonSelected];

应用程序运行,没有错误,但是 [STLMMainViewController locationButtonSelected] 中的以下方法没有被调用(我从未看到日志):

-(void)locationButtonSelected
{
[LocationButton setSelected:YES];
[eatDrinkbutton setSelected:NO];
[timeCalButton setSelected:NO];
[carButton setSelected:NO];
[contactButton setSelected:NO];
NSLog(@"LocationButtonSelected Method");
}

locationButtonSelected 方法中的所有属性和方法本身都在 STLMMainViewController 的 .h 中声明以供公共(public)访问。

谢谢

最佳答案

你可以试试这个:

self.stlmMainViewController= (STLMMainViewController *)self.navigationController.parentViewController;

(编辑:实际上,正如其他人刚刚指出的那样,您可能想改用 presentingViewController。)

看起来你在这之前的日志消息中是正确的。在这种情况下,您需要导航 Controller 的父级。

顺便说一句,删除此行时不会崩溃的原因是因为您最终将 locationButtonSelected 发送到 nil。那不会崩溃,但它也不会做任何事情。

关于iOS 访问 parentViewController 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804521/

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