我是iphone的新手,使用MKMapView
在我的应用程序中加载谷歌的地图。但它抛出异常“MKMapView必须在主线程上初始化。”那么我应该在哪里初始化我的MKMapView
对象。我正在viewDidLoad()
初始化。
提前感谢.....
答案 0 :(得分:3)
它没有在主线程上创建的原因是2个选项之一
performSelectorInBackground:
来创建您的观点在主线程调用performSelectorOnMainThread:
偏离主题:如果函数需要多于1个参数,请将其更改为NSDictionary并将所有设置加载到Dictionary中并将其传递到例如
NSDictionary *params = ...... //load your parameters into here
[myMapView performSelectorOnMainThread:@selector(initMap:)
withObject:params
waitUntilDone:YES];
答案 1 :(得分:0)
使用Swift 3,以下内容将确保您的函数在主线程上运行。 OperationQueue.main.addOperation {“你的segue或函数调用”}
答案 2 :(得分:0)
我收到了这个错误:
MKMapView必须在主线程上初始化
当我尝试以这种方式更改自定义UITableViewCell
的内容时:
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[myIndexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
The UITableviewCell in the corresponding indexpath contained a MKMapView that I tried to change its region.
myTabelViewCell *cell = [self.tableView cellForRowAtIndexPath:myIndexPath];
[cell setContentWithLatitude:currentLatitude longitude:currentLongitude];
使用上面的代码而不是[self.tableView reloadData]
来刷新一个单元格。