在显示另一个视图控制器的同时从一个视图控制器调用该方法
Posted
技术标签:
【中文标题】在显示另一个视图控制器的同时从一个视图控制器调用该方法【英文标题】:Call the method from one viewController while displaying the another one 【发布时间】:2013-12-04 05:49:21 【问题描述】:我有全屏 MapViewController
和 LisViewController
,它们显示在 popover 中。所以 ListViewController 是TableView
,我需要通过单击单元格显示不同点的标注(在表格的行中表示)。目前我无法解决这个问题..
在我已经实现的 listViewController 中
// LisViewController.h
@protocol ListViewControllerDelegate <NSObject>
- (void)showCalloutForObjectId:(id) objectId;
@end
@interface ListViewController : UITableViewController
@property (nonatomic, strong) id delegate;
@end
// ListViewController.m
- (id) initWithCoder:(NSCoder *)aDecoder
self = [super initWithCoder: aDecoder];
if (self)
self.delegate = [MapViewController new]; // I BELIEVE THE PROBLEM IS HERE - CAN'T GET THE INSTANCE OF THE PRESENT VIEW CONTROLLER
return self;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSDictionary * data = [self.dataSet dataFromIndex: indexPath.row];
if ([self.delegate respondsToSelector:@selector(showCalloutForObjectId:)])
[self.delegate showCalloutForObjectId: data[@"object_id"]];
所以我的 MapViewController 中的方法永远不会被调用 - 有什么帮助吗?
【问题讨论】:
[MapViewController new]
- new
是 MapViewController 中的一个方法吗?据我了解,您想通过关闭ListViewController
来从ListViewController
导航到MapViewController
,这是一个弹出窗口,并根据ListViewController
中的选定单元格通过MapViewController
在地图上显示一些东西 - 对吧?可以发MapViewController
的代码吗?
【参考方案1】:
您必须在您的MapViewController
中分配ListViewController
委托属性
在你的MapViewController
中实例化ListViewController
之后:
ListViewController *lvc = [ListViewController alloc] init];
lvc.delegate = self;
当然你需要实现
-(void)showCalloutForObjectId:(id) objectId;
在你的MapViewController
【讨论】:
太棒了!谢谢..我相信我永远不明白,如何正确实现代表..(以上是关于在显示另一个视图控制器的同时从一个视图控制器调用该方法的主要内容,如果未能解决你的问题,请参考以下文章
从 Facebook API iOS 的另一个视图控制器调用方法
试图显示从一个视图控制器捕获的 UIImage,并在 iOS 中的另一个视图控制器中显示它
将 ImageData 从一个视图控制器传递到另一个视图控制器