1

从 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,这不是选择的值。

在此先感谢您的帮助。

4

1 回答 1

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 时(或者如果使用 segue,在 prepareForSegue 中)将委托设置为“self”。并让 MapsViewController 处理委托方法。

- (void)universitiesViewController:(UniversitiesViewController *)uvc selectedIndex:(NSInteger)index
{
     // do stuff
}
于 2012-04-21T19:40:56.053 回答