从modalViewController(UniversitiesViewController *),我试图在rootViewController中设置一个没有运气的变量。在我的tableview中:didSelectRowAtIndexPath:方法我使用以下代码设置rootViewController(MapsViewController *)selectedIndex属性:
MapsViewController *mapsView = (MapsViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MapsView"];
mapsView.selectedIndex = [NSNumber numberWithInt:indexPath.row];
[self dismissModalViewControllerAnimated:YES];
当我在MapViewController中打印self.selectedIndex的值时,它始终为0,这不是所选的值。
提前感谢您的帮助。
答案 0 :(得分:2)
执行此操作的正确方法是为UniversitiesViewController创建委托协议。
@protocol UniversitiesViewControllerDelegate <NSObject>
- (void)universitiesViewController:(UniversitiesViewController *)uvc selectedIndex:(NSInteger)index;
@end
并添加
@property (weak, nonatomic) id <UniversitiesViewControllerDelegate> delegate;
到UniversitiesViewController类。
在UniversitiesViewController中的didSelectRow中,调用
[self.delegate universitiesViewController:self selectedIndex:indexPath.row]
然后从MapsViewController,实例化UniversitiesViewController(或者如果在prepareForSegue中使用segues),将委托设置为“self”。并使MapsViewController处理委托方法。
- (void)universitiesViewController:(UniversitiesViewController *)uvc selectedIndex:(NSInteger)index
{
// do stuff
}