我有一个导航控制器和第一个VC模态到第二个罚款。我按了ctrl+button
并拖了它,一切正常。
我正在从第一个VC(再次)做第二个segue,这次是另一个按钮,我是ctrl+button
并将它拖到新的VC中,我在XCODE中得到一个USELESS错误 -
2014-03-04 11:57:21.340 OutTonight [3173:60b] - [SettingsViewController setDealdetail:]:无法识别的选择器发送到实例0x16e686d0 2014-03-04 11:57:21.342 OutTonight [3173:60b] *终止app到期 未捕获的异常'NSInvalidArgumentException',原因: ' - [SettingsViewController setDealdetail:]:发送无法识别的选择器 例如0x16e686d0' * 首先抛出调用堆栈:
这是我的prepareforseguecode
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableview indexPathForSelectedRow];
DealViewController *detailView = (DealViewController *)segue.destinationViewController;
detailView.dealdetail = [self.allcontent objectAtIndex:indexPath.row];
detailView.dealpostcode = [self.allpostode objectAtIndex:indexPath.row];
detailView.dealvenuename = [self.allname objectAtIndex:indexPath.row];
detailView.dealaddress = [self.alladdress objectAtIndex:indexPath.row];
detailView.dealaddress2 = [self.alladdress2 objectAtIndex:indexPath.row];
detailView.deallat = [self.alllat objectAtIndex:indexPath.row];
detailView.deallng = [self.alllong objectAtIndex:indexPath.row];
detailView.userlatitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLatitude"];
detailView.userlongitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLongitude"];
}
有什么想法吗?
答案 0 :(得分:1)
我假设您已经在-prepareForSegue:
为原始segue做了一些事情?在这种情况下,您需要确保检查-prepareForSegue:
中的哪个segue,并为每个segu做正确的事情。
编辑:
要扩展我的答案,我猜您使用segue.destinationViewController
,并在其上调用setDealdetail:
。这可能适用于您的初始segue,因为destinationViewController响应了该消息,但是新segue的目标没有响应。您需要检查正在执行哪个segue。使用[segue.identifier isEqualToString:MySegueIdentifierString];
编辑2(发布代码后):
好的,你需要检查-prepareForSegue:
中正在执行哪个segue。像这样:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:SegueToDealViewControllerIdentifier]) {
NSIndexPath *indexPath = [self.tableview indexPathForSelectedRow];
DealViewController *detailView = (DealViewController *)segue.destinationViewController;
detailView.dealdetail = [self.allcontent objectAtIndex:indexPath.row];
detailView.dealpostcode = [self.allpostode objectAtIndex:indexPath.row];
detailView.dealvenuename = [self.allname objectAtIndex:indexPath.row];
detailView.dealaddress = [self.alladdress objectAtIndex:indexPath.row];
detailView.dealaddress2 = [self.alladdress2 objectAtIndex:indexPath.row];
detailView.deallat = [self.alllat objectAtIndex:indexPath.row];
detailView.deallng = [self.alllong objectAtIndex:indexPath.row];
detailView.userlatitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLatitude"];
detailView.userlongitude = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLongitude"];
}
}
其中SegueToDealViewControllerIdentifier
是原始segue的segue标识符。