您所在的位置:欢聚电脑网 > 编程学院 > 移动开发 > iOS开发 > 正文

iOS- 问题集合-地图-城市列表

时间:11-18 关键字:ios 来源:www.huanju.org

3.MapView—点击城市按钮,本应该显示一个可以选择的城市列表,可是点击城市按钮的时候却没有任何反映。程序中也没有任何警告和报错,那么现在要怎么找这个问题呢?最好的办法就是用到侦探思维的逻辑推理。好比说你生产一台手机,需要有几十到工序(流水做线的那种),最后检查到一台手机不合格,这就产生了问题;有了问题该怎么办呢,那就必须先找到问题,是什么样的问题导致的;找到问题解决它。关键就是找到问题,怎么找到问题呢?在写程序的时候,遇到警告和报错的提示的时候问题是程序指出来了的(我们在写程序的时候就要结构清楚,逻辑严谨,要动脑筋,尽可能在写代码时预先知道写的代码可能带来的问题和限制),我只需要解决,可是没有任何警告和报错的时候,我们怎么去找到问题解决它呢?本例中,我写的是一个地图,现在出现了如上所述的问题。我先想到的是按钮有没有关联,发现有关联;然后我就去找按钮相应的动作,//弹出城市列表导航控制器-  (IBAction)cityAction:(id)sender {NSLog(@"cityAction = %@", self.navigationController);       [self.navigationController presentModalViewController:self.worldCitiesListNavigationController animated:YES];}在这个方法里面,我们先要拿到self.navigationController,然后要拿到self.worldCitiesListNavigationController,最后执行presentModalViewController: animated:方法。我就去测试。。。我先去测试第二步了,我挨着把方法给打印出来,看它们执行了没有,执行顺序对不;发现都正确了。后来[940:c07] cityAction =<null>,发现是没有拿到第一步self.navigationController。没有初始化navigationController,navigationController没有分配内存,是空的。 找到问题了。在AppDelegate.m里面- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];     self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];    self.navigationController = [[UINavigationController alloc]initWithRootViewController:self.viewController];    [self.window addSubview:[navigationController view]];    [self.window makeKeyAndVisible];    return YES;}这样呢,点击城市按钮就可以出现城市列表了  

如果这篇文章对你有帮助,就请点个赞吧!