gpt4 book ai didi

ios - 从不在 Storyboard中的 xib 文件中推送 segue?

转载 作者:行者123 更新时间:2023-11-29 12:43:42 26 4
gpt4 key购买 nike

我正在尝试完成某件事,我正在寻找一些技巧。我开始从事一个由一个 xib 文件组成的项目。后来我升级到 xcode 5,很快我的其余界面文件就开始使用我的 Storyboard,但是我保留了我的旧 xib(主要是因为我如何将方法传递给它)并简单地称它为:

mapViewController *mapView=[[mapViewController alloc]initWithNibName:@"mapViewController" bundle:nil location:0 option:@"poe"];

最近我添加了新功能,在单击标注时我想准备一个 segue 以显示新 View 。首先在xib界面。我想知道我是否可以从我的 mapView(不在 Storyboard中)准备并调用 View /segue(在 Storyboard中)。或者,如果我可以简单地将我的 mapView 拖放到或复制并粘贴到我的 Storyboard中,然后将我的 segue 连接器绘制到我的新 View 中。因为我认为我没有必要将 mapView 添加到我的“故事线”但是我仍然想调用使用上面发布的方法。但是,如果这些都不可行,请提出另一种方法。谢谢更新我已将我的 xib 移动到我的 Storyboard界面,但是我遇到了一个小问题

当我从 xib 调用我的 map 时,它会放大到 init 方法中提供的特定位置。我传递了相同的参数,但在 Storyboard中重新创建旧结果时遇到了一些问题

    if ( ([receivedRainObject isEqualToString:@"Natural"])) {

// mapViewController *mapView=[[mapViewController //alloc]initWithNibName:@"mapViewController" bundle:nil location:0 option:@"na"];

// self.navigationItem setHidesBackButton:NO animated:NO];
// [self.navigationController setNavigationBarHidden:NO animated:YES];
// [self.navigationController pushViewController:mapView animated:NO];
[self performSegueWithIdentifier:@"countryMap" sender:self];
}

然后在准备srgue

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"countryMap"]) {
mapViewController *transferViewController=segue.destinationViewController;
transferViewController.location=0;
transferViewController.option=@"na";

}
}

然后在 View 中加载了 map location 确实评估为 0,断点向我显示所有这些代码都在逐步执行,但我提供的坐标区域不是显示的内容。(跨度或区域)(但是当我调用我的旧 xib 时它工作正常)

- (void)viewDidLoad
{
[super viewDidLoad];
{

// Do any additional setup after loading the view from its nib.

if (location==0)
{

CLLocationCoordinate2D location1;
location1.latitude=(double)15.435786;
location1.longitude=(double)-61.318447;


MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.50;
span.longitudeDelta=0.40;
region.span=span;
region.center= location1;

[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
}
}

初始化我的 map View

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil location:(int)num option:(NSString *)row
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.location=num;
self.option=row;

}
return self;
}

最佳答案

在您的 mapView 中,您应该能够在 callout 方法中执行类似这样的操作:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"YourStoryBoardName" bundle:[NSBundle mainBundle]];
YourViewControllerFromStoryBoard *viewController = [sb instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifierInYourStoryBoard"];

然后在您的 mapView 中,您可以覆盖 prepareForSegue 来做任何准备工作,然后呈现您的 viewController。

关于ios - 从不在 Storyboard中的 xib 文件中推送 segue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207351/

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