为什么插入导航会创建无法识别的选择器?
Why does inserting navigation create unrecognized selector sent?
在我的应用程序中,我决定将我的 segue 更改为故事板中的 Show Details segue,因为我希望故事板的影响来自屏幕底部,因此我需要一些方法来吸引用户回来,所以我在目标视图中插入了一个导航。但是现在我得到:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UINavigationController setImageData:]:无法识别的选择器发送到实例 0x7fbdfa887600'
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"infoSegue"])
{
// Get reference to the destination view controller
DetailsViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
int num = (int)[self getIndexNum];
NSString *dictionaryKey = _results[num];
Image *image = _dataDictionary[dictionaryKey];
vc.imageData = image;
NSLog(@"Vendor ID %@",image.vendorId);
}
}
导航变成视图的父级了吗?
作为 destinationViewController
returns 通用类型 UIViewController
你必须进行类型转换。
DetailsViewController *vc = (DetailsViewController *)[segue destinationViewController];
如果你的目标视图控制器是一个导航控制器,那么你不应该在导航控制器上设置图像!!正如@vadian 从答案中所说的那样,你需要转换 return 类型的 uiviewcontroller
!!!
UINavigationController *navController = [segue destinationViewController];
DetailsViewController *viewController = (DetailsViewController *)([navController viewControllers][0]);
[viewController setimageData:image];
确保 imageData 是同类 UIImage
。如果它是 NSData
类型,您可能需要这样做:
[viewController setimageData:[UIImage imageWithData:imageData]];
在我的应用程序中,我决定将我的 segue 更改为故事板中的 Show Details segue,因为我希望故事板的影响来自屏幕底部,因此我需要一些方法来吸引用户回来,所以我在目标视图中插入了一个导航。但是现在我得到:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UINavigationController setImageData:]:无法识别的选择器发送到实例 0x7fbdfa887600'
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"infoSegue"])
{
// Get reference to the destination view controller
DetailsViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
int num = (int)[self getIndexNum];
NSString *dictionaryKey = _results[num];
Image *image = _dataDictionary[dictionaryKey];
vc.imageData = image;
NSLog(@"Vendor ID %@",image.vendorId);
}
}
导航变成视图的父级了吗?
作为 destinationViewController
returns 通用类型 UIViewController
你必须进行类型转换。
DetailsViewController *vc = (DetailsViewController *)[segue destinationViewController];
如果你的目标视图控制器是一个导航控制器,那么你不应该在导航控制器上设置图像!!正如@vadian 从答案中所说的那样,你需要转换 return 类型的 uiviewcontroller
!!!
UINavigationController *navController = [segue destinationViewController];
DetailsViewController *viewController = (DetailsViewController *)([navController viewControllers][0]);
[viewController setimageData:image];
确保 imageData 是同类 UIImage
。如果它是 NSData
类型,您可能需要这样做:
[viewController setimageData:[UIImage imageWithData:imageData]];