0

これが私の最初の質問です。Core Audio で動作するアプリを作成しようとしています。使用しようとしているこのフレームワークhttp://theamazingaudioengine.com/を見つけましたが、これまでのところ、ファイルを再生するというドキュメントの最初のことを行うことができました。ただし、アプリのデリゲートで UIViewController をカスタム初期化すると、そのコンテンツがすべて失われ、View Controller が黒くなり、他の要素はなくなります。

私のUIViewControllerには、ファイルの再生を開始するために使用したいボタンが1つしかありませんが、現時点ではアクセスできないため、プロジェクトのビルド時にファイルの再生が開始されます。

私は何が間違っているのですか?

これは私の appDelegate です:

@implementation SoundCheckAppDelegate

@synthesize window = _window;
@synthesize audioController = _audioController;
@synthesize viewController = _viewController;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{


    // Create an instance of the audio controller, set it up and start it running
    self.audioController = [[[AEAudioController alloc] initWithAudioDescription:[AEAudioController nonInterleaved16BitStereoAudioDescription] inputEnabled:YES] autorelease];
    _audioController.preferredBufferDuration = 0.005;
    [_audioController start:NULL];

    // Create and display view controller
    self.viewController = [[SoundCheckViewController alloc] initWithAudioController:_audioController];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

@end

そして私のUIViewController:

@interface SoundCheckViewController ()

@property (nonatomic, strong) AEAudioController *audioController;
@property (nonatomic, strong) AEAudioFilePlayer *loop;

@end

@implementation SoundCheckViewController

- (id)initWithAudioController:(AEAudioController*)audioController {
    self.audioController = audioController;

    NSError *error;

    NSURL *file = [[NSBundle mainBundle] URLForResource:@"Southern Rock Drums" withExtension:@"m4a"];
    self.loop = [AEAudioFilePlayer audioFilePlayerWithURL:file
                                          audioController:_audioController
                                                    error:&error];
    if(error)
        NSLog(@"couldn't start loop");

    _loop.removeUponFinish = YES;
    _loop.loop = YES;
    _loop.completionBlock = ^{
        self.loop = nil;
    };

    [_audioController addChannels:[NSArray arrayWithObject:_loop]];

    return self;
}



@end
4

2 に答える 2

2

ストーリーボードを使用しているため、アプリ デリゲートからすべてのコードを削除する必要があります。ストーリーボードは、最初のコントローラーを自動的にインスタンス化し、画面に表示します。1つを初期化することで、カスタムビューを持たない別のものを作成するだけです.

オーディオ コントローラーを追加するには、init メソッドではなく、SoundCheckViewController の viewDidLoad メソッドにコードを追加する必要があります。これはこれを行う通常の方法ですが、使用しているフレームワークで何が可能かわかりません。

于 2013-04-26T16:50:56.160 に答える
0

最初にView Controllerを初期化する必要があると思います。

- (id)initWithAudioController:(AEAudioController*)audioController {
    // THIS LINE IS MISSING IN YOUR CODE
    self = [super initWithNibName:@"SoundCheckViewController" bundle:nil];
    if ( self ) {
       self.audioController = audioController;
       ...
    }

    return self;
}
于 2013-04-26T16:09:21.047 に答える