我想从代码中访问故事板以便使用以下行:
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
}
这是我在地图视图控制器中使用的代码来响应注释公开点击事件,并且希望在这里也使用它,但是我有两个问题!
问题1:因为thisSmallView是另一个视图的子视图,所以它无法直接访问故事板并不知道如何获取该访问权限。
问题2:thisBigView嵌入了一个导航控制器,但是同样,我不知道如何访问thisBigView,因此无法访问导航控制器。
(我认为如果我能解决问题2,那么自动解决问题1?)
--编辑:我尝试的--
DetailViewController *detail = [self.superview.storyboard instantiateViewControllerWithIdentifier:@"detail"];
但是我收到了“在UIView*类型的对象上找不到属性storyboard”的错误提示。
UIView
,并更改一些启动方法。不确定是否会被拒绝,但你可能需要考虑进行更改。 - Dustin