2014-09-12 7 views
0

Objective-C에 새로 추가되었지만 xCode에서 내 앱에 음악 선택 도구를 추가하려고합니다. 사용자가 클릭하면 해당 사용자의 음악 라이브러리가 열립니다 노래를 골라야하지만이 작업을 수행하는 방법을 찾을 수 없으며 내가 본 모든 문서가 제대로 작동하지 않는 것 같습니다. 예 :Pull-up Media Picker xCode/Objective-C

MPMediaPickerController *picker = 
    [[MPMediaPickerController alloc] 
     initWithMediaTypes: MPMediaTypeAnyAudio];     // 1 

[picker setDelegate: self];           // 2 
[picker setAllowsPickingMultipleItems: YES];      // 3 
picker.prompt = 
    NSLocalizedString (@"Add songs to play", 
         "Prompt in media item picker"); 

[myController presentModalViewController: picker animated: YES]; // 4 
[picker release]; 

은 Apple 도움말 문서에서 직접 확인할 수 있습니다. 내 응용 프로그램에이를 입력 할 때 나는 오류를 얻을 : 무엇

mediaPicker.delegate = self; // Error: Assigning to 'id<MPMediaPickerControllerDelegate?' from incompatible type "ViewController *const__stron" 

[self presentModalViewController:mediaPicker animated:YES]; // Error: 'presentModalViewController:animated:' is deprecated: first deprecated in iOS 6.0 

나는 mediaPicker.delegate = self; 줄 뭔가를 할 필요 같은 느낌하지만 생각을. 어떤 도움이 필요합니까?

답변

1

변경이 라인 :

mediaPicker.delegate = self; // Error: Assigning to 'id<MPMediaPickerControllerDelegate?' from incompatible type "ViewController *const__stron" 

mediaPicker.delegate = id<MPMediaPickerControllerDelegate>self; 

하거나 자기 클래스의 헤더 파일을 갈 수와 같은 그래서를 작성하여 MPMediaPickerControllerDelegate 거기에 부합 -

@interface CLassName : UIViewController <MPMediaPickerControllerDelegate> { 
//code 
} 

두 번째 문제는

입니다.
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0) 

사용중인 방법이 더 이상 사용되지 않으므로이 새로운 것을 더 잘 사용하십시오. 등이 사용

[self presentViewController:mediaPicker animated:YES completion:nil]; 

를 원하는 경우가 완료 블록으로, NO에 애니메이션 변경할 수 있습니다. 애니메이션이 완료된 후 일부 작업을 수행해야하는 경우이 블록에 코드를 작성할 수 있습니다.

희망이 도움이됩니다. 건배.

***** 편집 *****
는 클래스 이름 TestMediaPickerController 가정하자. 그런 다음 TestMediaPickerController.h 파일로 이동 한 다음 인터페이스를 선언 한 헤더 파일에 다음을 수행하십시오. 먼저 헤더에 추가하십시오.

#import <MediaPlayer/MediaPlayer.h> 

@interface TestMediaPickerController : UIViewController <MPMediaPickerControllerDelegate> { //Adding this `<MPMediaPickerControllerDelegate>` here makes your TestMediaPickerController Class confirm to the Protocol MPMediaPickerControllerDelegate. 
    //code 
} 

당신이 그것을 겪고있는 문제는 당신이 문제가 MPMediaPickerControllerDelegate을 설정가있는 것 같다.

+0

mediaPicker.delegate = id self를 입력하면; 나는 "MPMEdiaPickerControllerDelegate '라는 선언되지 않은 식별자를 사용했는데,'MPMediaPickerController '를 의미 했습니까?'예기치 않은 유형 이름 'id': 예상 된 표현식입니다. 다른 문제는 해결 되었습니까? 귀하의 도움이 지금까지! – Pecans

+0

내가 보여준대로 클래스 헤더의 프로토콜을 준수하여 시도 했습니까? – croyneaus4u

+0

여기에 멍청한 놈이되고 싶지 않지만 어떻게해야합니까? : P 그냥 viewContoller.h 파일입니까? – Pecans