私は現在、iPhoneアプリの一部を作成して、基本的に既存のアップルのメモ帳のように機能するセルのリスト(テーブルビュー内)を作成しています。
セルの名前が配列内の文字列の名前になるようにしようとしています。これは私が現在行っていることです。
@interface ViewController ()
{
NSMutableArray *cameraArray;
NSMutableArray *notesArray;
NSMutableArray *voiceArray;
}
@end
@implementation ViewController
//@synthesize myTableView;
- (void)viewDidLoad
{
[super viewDidLoad];
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
//[ud setObject:@"Archer" forKey:@"char1class"];
[ud synchronize];
NSString *key1;//[ud stringForKey:@"Key1"];
NSString *key2; //[ud stringForKey:@"Key1"];
NSString *key3; //[ud stringForKey:@"Key1"];
if([ud stringForKey:@"Key1"] == nil){
key1 = @"Open Camera Slot";
}else{
key1 = [ud stringForKey:@"key1"];
}
if([ud stringForKey:@"Key2"] == nil){
key2 = @"Open Camera Slot";
}else{
key2 = [ud stringForKey:@"key2"];
}
if([ud stringForKey:@"Key3"] == nil){
key3 = @"Open Camera Slot";
}else{
key3 = [ud stringForKey:@"key3"];
}
cameraArray = [[NSMutableArray alloc]initWithObjects:key1, key2, key3, nil];
}
//tableview datasource delegate methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return cameraArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil){
cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
NSEnumerator *enumerator = [cameraArray objectEnumerator];
id anObject;
NSString *cellName = nil;
while (anObject = [enumerator nextObject]) {
cellName = anObject;
}
//static NSString *cellName = [cameraArray.objectAtIndex];
cell.textLabel.text = [NSString stringWithFormat:cellName];
return cell;
}
したがって、基本的にはNSUserDefaultsのキーからcameraArrayに文字列を作成しています(テスト目的でこれを行っているだけで、文字列は後でユーザーが入力します)
私が立ち往生しているのは、列挙子が配列をうまく通過することですが、tableViewのすべてのセルで最後の値(3番目の値)のみを使用します。
したがって、「最初」、「2番目」、「3番目」の3つの文字列がある場合、3つのセルすべてが「3番目」と表示されます。
これを修正するにはどうすればよいですか?