我正在whirlyglobe开展一项计划。
当程序启动时,在视图中加载
,从该代码动画到地图的一部分 [globeViewC animateToPosition:MaplyCoordinateMakeWithDegrees(-122.4192, 37.7793) time:1.0];
这很好但是当我在masterView控制器中选择一个单元格时,我试图让地图设置为动画,所以我有这个
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[[[TypesArray objectAtIndex:indexPath.row]objectForKey:@"regions"]objectForKey:@"region"]isEqualToString:@"Caribbean"])
{
TestViewController *testView=[[TestViewController alloc]init];
// Start up over San Francisco
[testView.globeViewC animateToPosition:MaplyCoordinateMakeWithDegrees(-122.4192, 37.7793) time:1.0];
NSLog(@"test");
}
"试验"显示在日志中但它没有动画到地图上的点。
我已将#import "TestViewController.h"
添加到此文件的顶部并
@property(nonatomic,
strong) WhirlyGlobeViewController *globeViewC;
已添加到TestViewController.h
#import <UIKit/UIKit.h>
#import "WhirlyGlobeComponent.h"
#import "ConfigViewController.h"
// Map or globe or startup
typedef enum {MaplyGlobe,MaplyGlobeWithElevation,Maply3DMap,Maply2DMap,MaplyNumTypes} MapType;
//The Test View Controller brings up the WhirlyGlobe Component
// and allows the user to test various functionality.
@interface TestViewController : UIViewController <WhirlyGlobeViewControllerDelegate,MaplyViewControllerDelegate,UIPopoverControllerDelegate>
{
/// This is the base class shared between the MaplyViewController and the WhirlyGlobeViewController
MaplyBaseViewController *baseViewC;
/// If we're displaying a globe, this is set
WhirlyGlobeViewController *globeViewC;
/// If we're displaying a map, this is set
MaplyViewController *mapViewC;
UIPopoverController *popControl;
}
// Fire it up with a particular base layer and map or globe display
- (id)initWithMapType:(MapType)mapType;
@property(nonatomic,strong) NSString *parse;
@property(nonatomic,strong) WhirlyGlobeViewController *globeViewC;
@property(nonatomic,strong) MaplyViewController *mapViewC;
@end
答案 0 :(得分:0)
试试这个
TestViewController *testView= [[TestViewController alloc] initWithNibName:@"Page1" bundle:nil];
OR
TestViewController *testView = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllrID"];
答案 1 :(得分:0)
我相信你的事情有点混乱...... 假设你的masterviewcontroller是你的车,你的testvc是轴,而你的WhirlyGlobeViewController就是你的车轮。
你现在正在做的是:我正在我的车里按一个没有车轴和车轮的按钮,所以我订购一个车轴,我希望(不存在的)车轮能够滚动。这没有任何意义。您必须将车轴连接到车上,然后将车轮固定在车轴上。
你的whirlyglobe在testviewcontroller中的viewdidload(我猜)附加(初始化),但是从不调用该方法。 你说testviewcontroller中的行是有效的,那是因为(我猜)你是独立使用你的testviewcontroller而且是自动调用viewdidload。
从这里你有两个选择。第一个是你的地球可用的地方是你的所有程序,然后它应该是MasterViewController的属性或实例变量 而不是TestViewController。然后,您可以将testviewcontroller的viewdidload方法中的代码复制到masterviewviewcontroller的viewdidload方法中。 (whirly globe初始化的部分) 然后你必须通过
来调用你的动画[globeViewC animateToPosition:MaplyCoordinateMakeWithDegrees(-122.4192, 37.7793) time:1.0];
NSLog(@"test");
另一个选择是testviewcontroller应该是独立的,只有globe应该在这里。那么你应该通过使用pushViewController或添加一个childviewcontroller来显示控制器的某个地方,例如:
TestViewController *testView=[[TestViewController alloc]init];
//If you have a navigation view controller
[self.navigationController pushViewController: testView animated:YES];
//If you don't
[self addChildViewController:testView]; // testView's viewDidLoad will be called here
[self.view addSubview:testView.view];
NSLog(@"test");