我在此代码中执行了一个segue,并且已经验证了正确的标识符是' showContacts'
if ([segue.identifier isEqualToString:@"showContacts"]) {
SwipeTableViewController *destViewController = segue.destinationViewController;
destViewController.albumObj = album;
}
在这个块的最后一行,我收到此错误消息:
2014-07-22 10:00:18.333 LayoutTest[710:60b] -[UITableViewController setAlbumObj:]: unrecognized selector sent to instance 0x965d810
2014-07-22 10:00:18.336 LayoutTest[710:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewController setAlbumObj:]: unrecognized selector sent to instance 0x965d810'
这是我在头文件中声明albumObj的地方:
#import <UIKit/UIKit.h>
#import "SWTableViewCell.h"
#import "Album.h"
@interface SwipeTableViewController : UITableViewController <SWTableViewCellDelegate>
@property (nonatomic, strong) Album* albumObj;
@end
这是我在SwipeTableViewController.m文件中合成的地方:
@implementation SwipeTableViewController
@synthesize albumObj;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
我以完全相同的方式使用同一个对象完成了segues并且它运行良好。为什么我会遇到这个问题?我想,也许我应该像这样在表app appate中声明albumObj:
@interface SwipeTableAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) Album* albumObj;
@end
但是它看起来不像我需要的那样可以在SwipeTableViewController.m中访问albumObj。
答案 0 :(得分:4)
看起来segue.destinationViewController
正在为您提供UITableViewController
。这就是为什么说setAlbumObj
无法识别。 UITableViewController
上不存在该方法。确保您的目的地在故事板中为SwipeTableViewController
。
答案 1 :(得分:2)
这种情况发生的一个原因是你的故事板和你的代码之间存在差异:你的segue假定:@"showContacts"
segue的目的地是SwipeTableViewController
,而在故事板上则是destination设置为默认UITableViewController
。
打开故事板,选择segue的目标视图控制器,将其类型设置为UITableViewController
,重新编译并运行。这应该解决这个问题。