objective-c - 如何访问父 View ?

标签 objective-c xcode uiview uiviewcontroller storyboard

我正在尝试从代码访问 Storyboard 以便能够使用这一行:

DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"];

我在我的 map View 和 ListView 中使用它,但想在其他地方使用它。 问题是这个 View 是另一个 View 的 subview 。

设置如下:

thisBigView 是我在 Storyboard中添加的 View ,它是 ThisBigViewController 在 Storyboard 中,我向该 View 添加了另一个 View ,我们称它为 thisSmallView。该类设置为 ThisSmallView

ThisSmallView 是一个自定义 View ,我在其中动态生成按钮。这些按钮调用以下操作:

-(void) radarEventClick:(UIButton *)sender{
    SingletonManager *sharedManager = [SingletonManager sharedManager];

    DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"]; // PROBLEM 1

    Event *a;
    for(int i = 0; i < [sharedManager.eventsManager count]; i++){
        if(sender.tag == ((Event*)([sharedManager.eventsManager objectAtIndex:i])).id_nr){
            a = [sharedManager.eventsManager objectAtIndex:i];
            break;
        }
    }

    [detail setEvent:a];

    [self.navigationController pushViewController:detail animated:YES];    // PROBLEM 2

}

这是我在我的 mapviewcontroller 中用来响应 annotationdisclosure 点击的代码,我想在这里使用它,但我有 2 个问题!

问题 1:因为 thisSmallView 是 anotherview 的 subview ,它不能直接访问 Storyboard ,也不知道如何获得该访问权限。

问题 2:thisBigView 嵌入在 navigationcontroller 中,但同样,我不知道谁可以访问 thisBigView,所以我无法访问 navigationcontroller

(我想如果我能解决问题 2,我会自动解决问题 1 吗?)

-- 编辑:我尝试过的--

DetailViewController *detail = [self.superview.storyboard instantiateViewControllerWithIdentifier:@"detail"];   

但是我只是得到“在 UIView* 类型的对象上找不到属性 Storyboard ”

最佳答案

关于objective-c - 如何访问父 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11612194/

相关文章:

ios - 从 NSDictionary 检索 JSON 值

ios - 类对象始终为空

objective-c - 段错误 11 Objective-C,但 C 中没有

iphone - 你如何将 NSString 拆分成组件部分?

iphone - iOS旋转设备无旋转动画

ios - 将 UIView 插入背景并在顶部显示文本字段/按钮(SWIFT)

ios - 手动旋转 UIView 而不是自动旋转

ios - 访问核心数据中建模的类的属性的正确方法

ios - 架构 x86_64 的重复符号

iphone - 使用 CGRect 和 setNeedsDisplay