现在的位置: 首页 > 综合 > 正文

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

2013年10月09日 ⁄ 综合 ⁄ 共 1426字 ⁄ 字号 评论关闭

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。没有初始化navigationControllernavigationController没有分配内存,是空的。

 

找到问题了。

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
;

}

这样呢,点击城市按钮就可以出现城市列表了

 

抱歉!评论已关闭.