此代码无法从ClubImageViewController访问变量:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
if ([[segue identifier] isEqualToString:@"mySegue"]) {
UINavigationController *navigationController = segue.destinationViewController;
ClubImageViewController *vc = (ClubImageViewController * )navigationController.topViewController;
vc. //here can't see the var from ClubImageViewController
}
}
#import "ClubImageViewController.h"
#import "KASlideShow.h"
@interface ClubImageViewController () <KASlideShowDataSource,KASlideShowDelegate>
@property (strong, nonatomic) IBOutlet KASlideShow *slideShow;
@property NSArray* imageArray;
@end
我错过了什么?我应该改变故事板中的某些内容吗?
答案 0 :(得分:1)
基于猜测ClubImageViewController
是常规视图控制器,并且OP代码是在目标是导航控制器的复制粘贴中拾取的,一些更简单的代码将起作用...
if ([[segue identifier] isEqualToString:@"mySegue"]) {
ClubImageViewController *vc = (ClubImageViewController *)segue.destinationViewController;
// here, all will be fine with the variable vc
}
如果我错了,ClubImageViewController
确实是UINavigationController,那么......
if ([[segue identifier] isEqualToString:@"mySegue"]) {
UINavigationController *navVC = (UINavigationController *)segue.destinationViewController;
NSArray *viewControllers = navVC.viewControllers;
ClubImageViewController *vc = (ClubImageViewController *)viewControllers[0];
// here, all will be fine with the variable vc
}
答案 1 :(得分:0)
//使用字符串“mySegue”
从StoryBoard为你的segue分配一个标识符//And change fetch your ViewController object by getting the root view controller. I mean look at the last line inside your if condition
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
if ([[segue identifier] isEqualToString:@"mySegue"]) {
UINavigationController *navigationController = segue.destinationViewController;
ClubImageViewController *vc = (ClubImageViewController * )[navigationController.viewControllers objectAtIndex:0];
vc. //here can't see the var from ClubImageViewController
}
上一行
ClubImageViewController *vc = (ClubImageViewController * )navigationController.topViewController;
新行
ClubImageViewController *vc = (ClubImageViewController * )[navigationController.viewControllers objectAtIndex:0];