4

我正在尝试从代码中访问情节提要以便能够使用这一行:

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

我在我的地图视图和列表视图中使用它,但想在其他地方使用它。问题是这个视图,是另一个视图的子视图。

它的设置如下:

thisBigView 是我在情节提要中添加的视图,它是ThisBigViewController 在情节提要中,我向该视图添加了另一个视图,我们称之为 thisSmallView。类设置为ThisSmallView

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

-(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 的子视图,所以它没有直接访问情节提要的权限,也不知道如何获得该访问权限。

navigationcontroller问题 2: thisBigView嵌入在navigationcontroller.

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

-- 编辑:我试过的 --

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

但后来我得到'在 UIView * 类型的对象上找不到属性情节提要'

4

2 回答 2

4

超级视图

[smallView superview]

http://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instp/UIView/superview

于 2012-07-23T12:11:54.220 回答
3

在界面生成器中添加子视图作为超级视图的属性(控制拖动到头文件)。然后UIViewController向子视图添加一个属性。在superview的代码中然后做

nameOfSubView.superViewPropertyName = self;
于 2012-07-23T13:35:59.160 回答