UITableViewController无法识别的选择器发送到实例0xa17c1f0

时间:2013-03-13 13:36:04

标签: xcode uitableview unrecognized-selector

我是iOS开发的新手,目前我正在开发一个包含4个选项卡的选项卡式应用程序。在我的一个标签上,我试图显示一个表视图,但是我收到以下错误。

2013-03-13 14:15:35.416 STAM [4054:c07] - [UITableViewController setProducts:]:无法识别的选择器发送到实例0xa17c1f0

我创建了一个ProductsViewController类,它是UITableViewController的子类,我还将TableViewController连接到StoryBoard中的ProductViewController。

我还创建了一个Product类,其中插入了以下属性:

Product.h

 #import <Foundation/Foundation.h>

 @interface Product : NSObject
 @property (nonatomic, copy) NSString *name;
 @property (nonatomic, copy) NSString *number;
 @end

在AppDelegate.m中,我做了以下事情:

@implementation AppDelegate {
NSMutableArray *products;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    products = [NSMutableArray arrayWithCapacity:20];

Product *product = [[Product alloc] init];
product.name = @"Test Product";
product.number = @"123546";
[products addObject:product];

product = [[Product alloc] init];
product.name = @"Test Product 2";
product.number = @"654321";
[products addObject:product];

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex:0];
ProductsViewController *productsViewController = [[navigationController viewControllers] objectAtIndex:0];
productsViewController.products = products;

return YES;
}

最后在ProductViewController.h中:

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return [self.products count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ProductCell"];
Product *product = [self.products objectAtIndex:indexPath.row];
cell.textLabel.text = product.name;
    cell.detailTextLabel.text = product.number;

    return cell;
}

我真的不知道在哪里寻找错误。

非常感谢!

花岗岩

1 个答案:

答案 0 :(得分:1)

该行:

productsViewController.products = products;

转换为:

[productsViewController setProducts: products];

在您提供的代码中,没有提及“读写”产品属性,也没有提供上述方法。您通常可以这样做:

@interface ProductViewController ...
@property (readwrite) NSArray *products
// ...
@end


@implementation ProductViewController
@synthesize products
// ...
@end