抱歉,我仍然是一个菜鸟,只是在学习编程的时候,我想通过先学习好的设计来开始。我正在使用CLLocationManager和MKReverseGecoder来获取我的位置。在我的MKReverseGecoderDelegate方法中,我创建了我的注释以在MKMapView上显示。在我的标注中,我使用详细信息披露指示器调出另一个UITableView,它可以很好地显示您当前的地址,而不是查看小黑色标注气泡。
我的DetailViewController(UITableView)获取数据的好方法是什么?我的第一堂课是否有地址,州,邮政编码的ivars。在我的MKReverseGecoderDelegate中,在获取该信息时设置这些ivars。 (我认为我需要ivars的原因是因为我在MKReverseGeocoderDelegate中获取该信息的方法与displayDetailViewController是分开的)。然后让我的DetailViewController具有相同的值,当我去显示DetailViewController时,设置那些相同的变量?这似乎是多余的。
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
一个选项
声明继承NSObject的自定义类,如
@interface YourClassName : NSObject
{
NSString *address;
NSString *state;
NSString *zipcode;
}
@property(nonatomic, retain) NSString *address;
@property(nonatomic, retain) NSString *state;
@property(nonatomic, retain) NSString *zipcode;
@end
@implementation YourClassName
@synthesize address,state,zipcode;
-(void)dealloc
{
[super dealloc];
[address release];
[state release];
[zipcode release];
}
@end
//Create object of YourClassName and set values
YourClassName *objYourClassName = [[YourClassName alloc] init];
objYourClassName.address = @"YourValue";
objYourClassName.state = @"YourValue";
objYourClassName.zipcode = @"YourValue";
Pass this object to your DetailViewController by one method after creating method like
-(void)setDetailsForDetailViewController:(YourClassName*)pObjYourClassName
{
//self.objOfYourClassName is property declared in your detailviewcontroller.
self.objOfYourClassName = pObjYourClassName; //You can use self.objOfYourClassName to set values in TableViewController.
}
如果你卡在任何让我知道的地方,我很乐意帮助你解决这个问题。
答案 1 :(得分:0)
如果您按需进行反向地理编码,请使用注释的坐标初始化DetailViewController。像这样:
- (id)initWithCoordinate:(CLLocation*)location {
if (self = [super initWithNibName:@"DetailController" bundle:nil]) {
self.location = location;
}
return self;
}
这是创建控制器的常见模式,因为它使控制器的用户清楚地知道控制器依赖于位置参数。其他替代方案(全局变量或单例)不是那么干净,因为它们隐藏信息并使控制器更难理解和单元测试。
然后让控制器启动一个异步任务来进行地理编码,将自己设置为委托,并在完成后显示信息。