当前位置:编程学习 > wap >>

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

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;
}
这样呢,点击城市按钮就可以出现城市列表了
 
 
补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,