1

私はレコーディングアプリケーションに取り組んでいます。このアプリケーションでは、自分のテキストでレコーディングを保存し、現在の日付と時刻でレコーディングを保存します。以下のコードが示すように

-(IBAction)RecButtonPress:(id)sender
{
    NSLog(@"Song name:%@",mySongname);
    NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44000.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
    [recordSetting setValue: [NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
    [recordSetting setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
    [recordSetting setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
    NSDate* now = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd:MMM:YY_hh:mm:ss a"];
    NSString *file= [dateFormatter stringFromDate:now];
    NSString *fina=[file stringByAppendingString:mySongname];
    NSArray  *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docsDir  = [dirPaths objectAtIndex:0];
    NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"MyRecordings"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:soundFilePath])
        [[NSFileManager defaultManager] createDirectoryAtPath:soundFilePath withIntermediateDirectories:NO attributes:nil error:nil];
            soundFilePath = [soundFilePath stringByAppendingPathComponent:fina];
    recordedTmpFile = [NSURL fileURLWithPath:soundFilePath];
    NSLog(@"Uf:%@",recordedTmpFile);
    recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
    [recorder setDelegate:self];
    [recorder prepareToRecord];
    [recorder record];
        [recordSetting release];
       [dateFormatter release];
}

記録を保存した後SaveRecordingクラスに移動すると、実際にはこれらすべての記録がTableviewに表示されます。ここに私のコードがあります

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentPath = [documentsDirectory stringByAppendingPathComponent:@"MyRecordings"];
directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath:documentPath];
NSLog(@"file found %i",[directoryContent count]);
NSLog(@"arraydata: %@", directoryContent );
[directoryContent retain];
[self.tableView reloadData];
 }

その後、UITableviewにNSMutablArrayである「directoryContent」を割り当てます。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return [directoryContent count];
}

////////////////////////////////////////////////// ////////////////////////////////////////////

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
static NSInteger StateTag = 1;
static NSInteger CapitalTag = 2;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    UILabel *capitalLabel = [[UILabel alloc] initWithFrame:CGRectMake(2, 2, 120, 20)];
    //capitalLabel.text=@"mydata";
    capitalLabel.backgroundColor=[UIColor redColor];
    capitalLabel.tag = CapitalTag;
    [capitalLabel setFont:[UIFont systemFontOfSize:9]];
    [cell.contentView addSubview:capitalLabel];
    [capitalLabel release];

    UILabel *stateLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 22, 310, 20)];
    stateLabel.tag = StateTag;
    [stateLabel setFont:[UIFont systemFontOfSize:14]];
    stateLabel.adjustsFontSizeToFitWidth=YES;
    [cell.contentView addSubview:stateLabel];
    [stateLabel release];

  }
UILabel * stateLabel = (UILabel *) [cell.contentView viewWithTag:StateTag];
//UILabel * capitalLabel = (UILabel *) [cell.contentView viewWithTag:CapitalTag];

stateLabel.text = [directoryContent objectAtIndex:indexPath.row];
//capitalLabel.text = [datesaving objectAtIndex:indexPath.row];

return cell;
}

そして最後に、私のUITableViewはScreenShotの下で次のようになります ここに画像の説明を入力してください

私のすべてのこの簡単な議論の目的は、スクリーンショットがそのUITableviewセルに私のテキストと現在の日付と時刻を表示するようにすることです。次に、このディレクトリコンテンツ配列データを2つのプラッツに分割します。現在の日付と時刻で構成される部分UITableviewのセルの赤い部分であるcapitalLabelと、UITableviewのセルの一部の下にあるstateLabelにテキストを割り当てます。ヘルプが適用されます。よろしくお願いします。

4

2 に答える 2

1

こんにちはレナあなたは次のことを試すことができます

1)辞書の配列

日付と曲の名前を別々に辞書に保存します

 NSDictionary *myData    =   [NSDictionary dictionaryWithObjectsAndKeys:myDateObj,@"SongDate",mySongName,@"SongName", nil];

[myMutableArray addObject:myData]//myMutableArray is a NSMutableArray;

これで、次のように使用できます

NSDictionary *dict = [directoryContent objectAtIndex:indexPath.row];
stateLabel.text =    [dict objectForKey:@"SongName"];
capitalLabel.text =  [dict objectForKey:@"SongDate"];

また

2)あなたはちょっとしたトリックをすることができます:)

NSString *fina=[file stringByAppendingFormat:@"+%@",mySongname];

NSArray *Array  =   [fina componentsSeparatedByString:@"+"];

capitalLabel.text =  [Array objectAtIndex:0];

stateLabel.text =    [Array objectAtIndex:1];

ここで追加するときに、フォーマットを使用して、後で文字列を分割するために使用できる特殊文字を追加できます。

これが何らかの形であなたを助けることを願っています:)

于 2012-12-06T09:32:21.293 に答える
1

まず、このように文字列を追加する必要があります

NSString *file3 = [file stringByAppendingString:@"+"];


NSString *fina= [file3 stringByAppendingString:mySongname];

その後、あなたはそれを次のように分離する必要があります

NSArray *Array = [str componentsSeparatedByString:@"+"]; 
NSLog(@"myindex0str:%@",[Array objectAtIndex:0]); 
NSLog(@"myindex1str:%@",[Array objectAtIndex:1]);

そのため、時間と曲名の両方を個別に取得できます。

于 2012-12-06T12:45:47.083 に答える