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 に答える