gpt4 book ai didi

ios - 选项卡栏 Controller 项目中 2 个 ViewController 之间的通信

转载 作者:可可西里 更新时间:2023-11-01 04:08:54 27 4
gpt4 key购买 nike

我在我的项目中使用了一个选项卡栏 Controller ,其中 FirstViewController 有一个 Mapbox map View ,而 SecondViewController 有按钮,当按下这些按钮时会向 map View 添加一个图 block 层。这是我试过的。它会产生错误 ***在 SecondViewController.m 中使用未声明的标识符“_mapView”

//FirstViewController.h

#import <UIKit/UIKit.h>
#import <MapBox/MapBox.h>
#import "SecondViewController.h"
#import "SecondViewController.m"

@interface FirstViewController : UIViewController


@property (strong, nonatomic) IBOutlet RMMapView *mapView;


@end


//SecondViewController.h

#import <UIKit/UIKit.h>
#import <MapBox/MapBox.h>
#import "FirstViewController.h"
#import "FirstViewController.m"


@interface SecondViewController : UIViewController

- (IBAction)stationingLayerButton:(id)sender;

@end


//SecondViewController.m

- (IBAction)stationingLayerButton:(id)sender {

RMMBTilesSource *stationingMap = [[RMMBTilesSource alloc] initWithTileSetURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Stationing20" ofType:@"mbtiles"]]];


[_mapView addTileSource:stationingMap atIndex:2];

}
}

map 调用是正确的,因为我已经在一个只使用一个 View Controller 的项目上对其进行了测试。现在我在标签栏 Controller 上尝试它,我得到了这个错误。

我的问题是

1.如何让 FirstViewController 中的 mapView 响应 SecondViewController 中的调用?2.这个可以吗?我已经导入了类文件,认为这会打开两者之间的通信,但我遇到了这个错误。

最佳答案

使用标签栏 Controller ,您可以在所有关联的 View Controller 上获取数组。

您可以在此处找到更多详细信息:UITabbarController - viewControllers property

例如:

在标签栏中,如果我们有两个 View Controller ,比如说 VC1 和 VC2,那么我们可以使用下面的代码片段来引用其中的任何一个。

访问 VC2 类实现中的 VC1 引用 (VC2.m):

VC1 *myVC1ref = (VC1 *)[self.tabBarController.viewControllers objectAtIndex:0];

现在我们可以使用 VC1 类的公共(public)属性和方法,它会给出与已加载的标签栏相同的引用。

希望这对您有所帮助。

关于ios - 选项卡栏 Controller 项目中 2 个 ViewController 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674036/

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