在 UIViewController 中调用方法来定位错误

Posted

技术标签:

【中文标题】在 UIViewController 中调用方法来定位错误【英文标题】:Call method in UIViewController to target error 【发布时间】:2015-06-29 07:38:34 【问题描述】:

在我的MainMainViewController 中,我创建了新的 UIView (ContentView)。我设置了

DetailViewController *detailView = 
   [[DetailViewController alloc] initWithObject:paAnnotation];
detailView.view.frame = CGRectMake(0, 
                                   0, 
                                   [self getWidthOfScreen], 
                                   [self getWidthOfScreen]);
[contentView addSubview:detailView.view];

它工作正常,但在我的DetailViewController 中,我创建了 UIButton 并设置了目标操作。但是当我点击按钮时它崩溃并显示错误。你能告诉我问题出在哪里吗?

- (id)initWithObject:paAnnotation 

    if ((self = [super init])) 
        self.annotation = paAnnotation;
    

    return self;
    

- (void)viewDidAppear:(BOOL)animated 

        UIButton *closeButton = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
        closeButton.backgroundColor = [UIColor redColor];
        [closeButton addTarget:self 
                        action:@selector(closeContent) 
              forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:closeButton];



- (void)closeContent 
    NSLog(@"Test");

错误:

-[GEOVectorTile closeContent]: unrecognized selector sent to instance 0x19d0a1e0

【问题讨论】:

你试过在viewDidLoad里面设置按钮吗? 是的,我试过了,但没有出现同样的错误。 【参考方案1】:

在您的 MainMainViewController 中,尝试在初始化时保留您的 detailView。或者在 MainMainViewController 中创建 detailView 作为保留属性,然后使用它。

【讨论】:

我尝试设置@property (nonatomic, retain) UIView *contentView;,但现在点击后显示错误EXC_BAD_ACCESS 尝试使用@property(非原子,保留)DetailViewController *detailView

以上是关于在 UIViewController 中调用方法来定位错误的主要内容,如果未能解决你的问题,请参考以下文章

在 init 方法完成之前调用 UIViewController viewDidLoad

UIViewController的生命周期及方法调用顺序

UIViewController 子类调用方法

<UIViewController> 开始/结束外观转换的不平衡调用

通过 addSubview 添加后,在父 UIViewController 中调用方法

在 iOS5 中未调用 UIViewController 设备旋转委托方法