2012-03-12 8 views
0

現在、私のアプリケーションは、ボタンが押されたときにUIImagePickerControllerをロードします。私はボタンを取り除き、画像が選択された後に、ビューがロードされた後に自動的にロードしてから、アプリケーションを閉じるようにしたいと考えています。アプリケーションロード時にUIImagePickerControllerを自動的に表示

これは、ボタンをクリックしたときに使用していた方法です。

-(BOOL)startMediaBrowserFromViewController:(UIViewController *)controller usingDelegate:(id<UIImagePickerControllerDelegate,UINavigationControllerDelegate>)delegate 
{ 
if(([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum] == NO) 
    || (delegate == nil) 
    || (controller == nil)) 
    return NO; 
UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init]; 
mediaUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum]; 
mediaUI.allowsEditing = YES; 
mediaUI.delegate = delegate; 

[controller presentModalViewController:mediaUI animated: YES]; 
return YES; 
} 

私はloadViewメソッドでこのメソッドを呼び出すことができたと考えました。私は3つの方法を試しました。まず、明白なもの。

[self startMediaBrowserFromViewController:self usingDelegate:self] 

これは機能しませんでしたが、私が奇妙に見えたYESを返しました。

次に、ボタンをクリックしたときに使用されるメソッドを呼び出しました。

[self btnShowClicked:nil] 

そこにも運がありません。 (私はそれを正しく理解している場合)には、ボタンの上にまだ

[self.btnShow sendActionsForControlEvents:UIControlEventTouchUpInside]; 

運をタッチをシミュレートされるだろうと私はアイデアの出てるので、最後に、私は、私が仕事をしなければならないだろうと思ったものを試してみました。

これを行う方法を知っている人はいますか?私はそれが難しいとは思わない。

+0

viewDidLoadメソッドで呼び出すようにしてください。loadViewメソッドではまだ使用できないものがあります。 – TheEye

答えて

1

loadViewではなく、viewDidAppearメソッドにコードを追加してください(3つの方法のいずれかが最初のようです)。最初に[super viewDidAppear]にも電話してください。

この問題は、がと呼ばれ、の後にすべて正しく設定されていることが原因です。

+0

あなたはviewDidAppearメソッドに呼び出しを行い、それがシステムによって呼び出されるのを待つだけです。 – Erpheus

+0

うん、しかしそれはカプセル化されていません!彼は後でそれをもう一度呼びたいと思ったら?手動でviewDidAppearを再度呼び出すのは悪い方法です。 – Tim

+1

@Timは素晴らしい作品です!ありがとう – nick

関連する問題