0

私は iOS 開発の初心者で、現在 4 つのタブを含むタブ付きアプリケーションに取り組んでいます。タブの 1 つでテーブル ビューを表示しようとしていますが、次のエラーが表示されます。

2013-03-13 14:15:35.416 STAM[4054:c07] -[UITableViewController setProducts:]: 認識されないセレクターがインスタンス 0xa17c1f0 に送信されました

UITableViewController のサブクラスである ProductsViewController クラスを作成し、TableViewController を StoryBoard の ProductViewController に接続しました。

また、次のプロパティを挿入した Product クラスも作成しました。

製品.h

 #import <Foundation/Foundation.h>

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

AppDelegate.mi では、次のことを行いました。

@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;
}

エラーを探す場所が本当にわかりません。

どうもありがとうございました!

花崗岩

4

1 に答える 1

1

この線:

productsViewController.products = products;

次のように変換されます。

[productsViewController setProducts: products];

あなたが提供したコードには、「読み書き」製品のプロパティについての言及はなく、上記の方法も提供していません。通常は次のようにします。

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


@implementation ProductViewController
@synthesize products
// ...
@end
于 2013-03-13T14:22:15.537 に答える