Ios 由于无法识别发送给VC的选择器,应用程序崩溃
由于使用segue发送的选择器无法识别,我的应用程序崩溃。我知道这是stackoverflow中的一个常见问题。我尝试了所有的解决办法,但都没有成功。我想我错过了什么。我当前的项目会引发此异常,但具有相同代码的新项目不会引发任何异常。为什么?我尝试像下面的代码片段一样使用segue将数据从FirstViewController传递到DetailViewController 在我的FirstViewController.h文件中:Ios 由于无法识别发送给VC的选择器,应用程序崩溃,ios,objective-c,exception,uinavigationcontroller,segue,Ios,Objective C,Exception,Uinavigationcontroller,Segue,由于使用segue发送的选择器无法识别,我的应用程序崩溃。我知道这是stackoverflow中的一个常见问题。我尝试了所有的解决办法,但都没有成功。我想我错过了什么。我当前的项目会引发此异常,但具有相同代码的新项目不会引发任何异常。为什么?我尝试像下面的代码片段一样使用segue将数据从FirstViewController传递到DetailViewController 在我的FirstViewController.h文件中: #import <UIKit/UIKit.h> #
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface FirstViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
@end
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController
@property (nonatomic, strong) NSString *nameStr;
@end
在my DetailViewController.h文件中:
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface FirstViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
@end
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController
@property (nonatomic, strong) NSString *nameStr;
@end
我在日志中收到了这个错误消息-
2015-03-11 10:27:24.145 bdipo[1185:18722] -[UINavigationController setNameStr:]: unrecognized selector sent to instance 0x7fe928dad8c0
2015-03-11 10:27:24.147 bdipo[1185:18722] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setNameStr:]: unrecognized selector sent to instance 0x7fe928dad8c0'
您可以访问您的视图,如下所示
DetailViewController *detailVC =
[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];//modify this identifier name as per your StoryBoardIDentifier for detailview at storyboard..
detailVC.nameStr=@"Nuibb";
[self.navigationController pushViewController:detailVC animated:NO];//if you want to push to detail view from first view
希望它能帮助您……您可以访问以下视图
DetailViewController *detailVC =
[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];//modify this identifier name as per your StoryBoardIDentifier for detailview at storyboard..
detailVC.nameStr=@"Nuibb";
[self.navigationController pushViewController:detailVC animated:NO];//if you want to push to detail view from first view
希望它能帮助您……您可以访问以下视图
DetailViewController *detailVC =
[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];//modify this identifier name as per your StoryBoardIDentifier for detailview at storyboard..
detailVC.nameStr=@"Nuibb";
[self.navigationController pushViewController:detailVC animated:NO];//if you want to push to detail view from first view
希望它能帮助您……您可以访问以下视图
DetailViewController *detailVC =
[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];//modify this identifier name as per your StoryBoardIDentifier for detailview at storyboard..
detailVC.nameStr=@"Nuibb";
[self.navigationController pushViewController:detailVC animated:NO];//if you want to push to detail view from first view
希望它能帮助您…V1(segue name=xyz)-->NavController-->(ROOT)VC2
在vc1的didselectforRowAtIndexPath或任何其他操作方法中编写此代码
[self performSegueWithIdentifire:@"xyz"];
然后重写该方法-
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"xyz"]) {
DetailViewController *vc = (DetailViewController *)[segue destinationViewController];
vc.nameStr = @"Nuibb";
}
}
在DetailViewController.h内部,首先声明一个属性
@property(nonatomic,strong)NSString *nameStr;
V1(segue name=xyz)-->NavController-->(ROOT)VC2
在vc1的didselectforRowAtIndexPath或任何其他操作方法中编写此代码
[self performSegueWithIdentifire:@"xyz"];
然后重写该方法-
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"xyz"]) {
DetailViewController *vc = (DetailViewController *)[segue destinationViewController];
vc.nameStr = @"Nuibb";
}
}
在DetailViewController.h内部,首先声明一个属性
@property(nonatomic,strong)NSString *nameStr;
V1(segue name=xyz)-->NavController-->(ROOT)VC2
在vc1的didselectforRowAtIndexPath或任何其他操作方法中编写此代码
[self performSegueWithIdentifire:@"xyz"];
然后重写该方法-
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"xyz"]) {
DetailViewController *vc = (DetailViewController *)[segue destinationViewController];
vc.nameStr = @"Nuibb";
}
}
在DetailViewController.h内部,首先声明一个属性
@property(nonatomic,strong)NSString *nameStr;
V1(segue name=xyz)-->NavController-->(ROOT)VC2
在vc1的didselectforRowAtIndexPath或任何其他操作方法中编写此代码
[self performSegueWithIdentifire:@"xyz"];
然后重写该方法-
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"xyz"]) {
DetailViewController *vc = (DetailViewController *)[segue destinationViewController];
vc.nameStr = @"Nuibb";
}
}
在DetailViewController.h内部,首先声明一个属性
@property(nonatomic,strong)NSString *nameStr;
在启动时加载的任何应用程序中,您只需要一个导航控制器,即可为您导航整个视图控制器堆栈。它需要是根视图控制器,选中“是初始视图控制器”框(在属性检查器下,视图控制器)以使其开始箭头指向视图的左侧 假设您的NewsTVC是要显示的第一个视图控制器,请删除情节提要中的导航视图控制器。选择NewsTVC,转到XCode工具栏并选择“编辑器-->嵌入-->导航控制器” 将创建一个导航控制器,该控制器将进入您的NewsTVC。确保为新导航控制器选择了“Is Initial View Controller”,并在NewsTVC原型单元格和DetailVC之间拖动一个新的分段。这将组织堆栈,以便segue正常运行
在启动时加载的任何应用程序中,您只需要一个导航控制器,即可为您导航整个视图控制器堆栈。它需要是根视图控制器,选中“是初始视图控制器”框(在属性检查器下,视图控制器)以使其开始箭头指向视图的左侧 假设您的NewsTVC是要显示的第一个视图控制器,请删除情节提要中的导航视图控制器。选择NewsTVC,转到XCode工具栏并选择“编辑器-->嵌入-->导航控制器” 将创建一个导航控制器,该控制器将进入您的NewsTVC。确保为新导航控制器选择了“Is Initial View Controller”,并在NewsTVC原型单元格和DetailVC之间拖动一个新的分段。这将组织堆栈,以便segue正常运行
在启动时加载的任何应用程序中,您只需要一个导航控制器,即可为您导航整个视图控制器堆栈。它需要是根视图控制器,选中“是初始视图控制器”框(在属性检查器下,视图控制器)以使其开始箭头指向视图的左侧 假设您的NewsTVC是要显示的第一个视图控制器,请删除情节提要中的导航视图控制器。选择NewsTVC,转到XCode工具栏并选择“编辑器-->嵌入-->导航控制器” 将创建一个导航控制器,该控制器将进入您的NewsTVC。确保为新导航控制器选择了“Is Initial View Controller”,并在NewsTVC原型单元格和DetailVC之间拖动一个新的分段。这将组织堆栈,以便segue正常运行
在启动时加载的任何应用程序中,您只需要一个导航控制器,即可为您导航整个视图控制器堆栈。它需要是根视图控制器,选中“是初始视图控制器”框(在属性检查器下,视图控制器)以使其开始箭头指向视图的左侧 假设您的NewsTVC是要显示的第一个视图控制器,请删除情节提要中的导航视图控制器。选择NewsTVC,转到XCode工具栏并选择“编辑器-->嵌入-->导航控制器” 将创建一个导航控制器,该控制器将进入您的NewsTVC。确保为新导航控制器选择了“Is Initial View Controller”,并在NewsTVC原型单元格和DetailVC之间拖动一个新的分段。这将组织堆栈,以便segue正常运行
tableView
上的DIDSelectRowatinex
一个UINavigationController
是根据您的故事板进行分割的,并且您的navigationController
没有任何名为nameStr
您必须继续使用
detailViewController
direct。AsUINavigationController
无法在导航中按pe键。在表视图上