UITableView に入るたびに、配列に新しいオブジェクトを追加したいと考えています。問題は、このビューから出ると UITableView が割り当て解除されるため、UITableView クラスで配列を宣言できないことです。
「array」という新しい NSObject クラスを作成しましたが、その使い方がわかりません。
Array.h
#import <Foundation/Foundation.h>
@interface Array : NSObject
{
NSMutableArray *tableau;
}
@property (strong) NSMutableArray* tableau;
- (id)initWithName:(NSMutableArray *)atableau ;
- (NSMutableArray*) tableau;
- (void) setTableau:(NSMutableArray*) newTableau;
+(Tableau*)instance;
@end
配列.m
#import "Array.h"
@implementation Array
- (id)initWithName:(NSMutableArray *)atableau {
if ((self = [super init]))
{
self.tableau = atableau;
}
return self;
}
- (NSMutableArray*) tableau{
return tableau;
}
- (void) setTableau:(NSMutableArray*) newTableau{
tableau = newTableau;
}
+(Tableau*)instance{
static dispatch_once_t once;
static Array *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] initWithName:@"jean" ];
});
return sharedInstance;
}
@end
UITableViewController.m
...
- (void)viewDidAppear:(BOOL)animated
{
if (![[Array instance] tableau]) {
}
[[[Array instance]tableau]addObject:@"koko"];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
NSLog(@"appear");
}
...
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[[[Array instance] tableau] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
...
私がそれをすると、このエラーが発生しました:
'NSInvalidArgumentException'、理由: '-[__NSCFConstantString addObject:]: 認識されないセレクターがインスタンス 0x5aa4 に送信されました'
今後ともよろしくお願いいたします。