【发布时间】:2013-11-22 01:34:29
【问题描述】:
我查看了与在视图控制器之间传递数据相关的所有其他帖子,但没有一个可以解决我的问题。
我想将某人在 mapKit 中点击的注释的标题传递给新的视图控制器,以便我可以在新的视图控制器中使用该标题。我正在使用calloutAccessoryControlTapped 方法来检测何时有人点击了 detailDisclosure 按钮,然后使用以下代码将标题添加到第二个视图控制器(称为 detailViewController)中的属性:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
detailViewController *viewController = (detailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"detailViewController"];
detailViewController *detailView = [[detailViewController alloc] init];
// THIS IS WHERE I SET THE ANNOTATION TITLE TO THE PROPERTY IN THE SECOND VIEWCONTROLLER
detailView.titleTime = view.annotation.title;
NSLog(@"view.annotation.title: %@", view.annotation.title); // SHOWS THE TITLE
NSLog(@"detailView.titleTime: %@", detailView.titleTime); // SHOWS THE TITLE
// HERE I PRESENT NEW VIEWCONTROLLER (HOPING THE TITLE IS PASSED)
[self presentViewController:viewController animated:YES completion:nil];
}
在第二个视图控制器(detailViewController)中,我在viewDidLoad 方法中有这个:
- (void)viewDidLoad
{
[super viewDidLoad];
// set the Title Label to the titleTime (passed from the mainViewController)
self.titleForDetail.text = self.titleTime;
NSLog(@"titleForDetail.text %@:", titleForDetail.text); // THIS IS NULL
NSLog(@"titleForDetail.text %@:", titleTime); // THIS IS NULL
}
为什么是self.titleForDetail.text 和self.titleTime NULL?为什么原始 viewController 没有传递任何内容?
【问题讨论】:
-
你在使用故事板吗?
-
是的,我正在使用 StoryBoards。但我没有使用任何赛格威......我正在以编程方式推动我的观点。
-
什么是titleTime?字符串属性?如果是这样,您如何同时引用 self.titleTime 和 titleTime?在最新版本的 Xcode 中,属性的支持实例变量以下划线为前缀,以便您知道何时使用该属性以及何时使用 iVar。另外,titleForDetail 是什么?标签,UITextField 还是 UITextView?您的代码看起来像 titleForDetail 是 nil
-
titleForDetail 是一个 UILabel,titleTime 是一个 NSString
-
在
calloutAccessoryControlTapped中,您将属性设置为detailView,但随后呈现viewController。
标签: ios uiviewcontroller