ううむ
上のコードだとダメで、下のコードだといける。どっちもコンパイルは通る。
わたしが書いたコード
- ( void ) actionSheet:( UIActionSheet* ) actionSheet clickButtonAtIndex:( NSInteger )buttonIndex { // Check Button Indexes if( buttonIndex >= 3 ) return; // SourceType UIImagePickerControllerSourceType sourceType = 0; switch ( buttonIndex ) { case 0: { sourceType = UIImagePickerControllerSourceTypePhotoLibrary; break; } case 1: { sourceType = UIImagePickerControllerSourceTypeCamera; break; } case 2: { sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; break; } // default: // break; } // Check Availabirity if( ![UIImagePickerController isSourceTypeAvailable:sourceType] ) return; // Create UIImagePickerControll UIImagePickerController* imagePicker; imagePicker = [[UIImagePickerController alloc] init]; [imagePicker autorelease]; imagePicker.sourceType = sourceType; imagePicker.allowsImageEditing = YES; imagePicker.delegate = self; // Show UIImagePickerController [self presentModalViewController:imagePicker animated:YES]; }
お手本コード
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { // ボタンインデックスをチェックする if (buttonIndex >= 3) { return; } // ソースタイプを決定する UIImagePickerControllerSourceType sourceType = 0; switch (buttonIndex) { case 0: { sourceType = UIImagePickerControllerSourceTypePhotoLibrary; break; } case 1: { sourceType = UIImagePickerControllerSourceTypeCamera; break; } case 2: { sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; break; } } // 使用可能かどうかチェックする if (![UIImagePickerController isSourceTypeAvailable:sourceType]) { return; } // イメージピッカーを作る UIImagePickerController* imagePicker; imagePicker = [[UIImagePickerController alloc] init]; [imagePicker autorelease]; imagePicker.sourceType = sourceType; imagePicker.allowsImageEditing = YES; imagePicker.delegate = self; // イメージピッカーを表示する [self presentModalViewController:imagePicker animated:YES]; }
結果
関数名のところで
- ( void ) actionSheet:( UIActionSheet* ) actionSheet clickButtonAtIndex:( NSInteger )buttonIndex
となっていましたが、
- ( void ) actionSheet:( UIActionSheet* ) actionSheet clickedButtonAtIndex:( NSInteger )buttonIndex
が正しかったようです。「clickButtonAtIndex」ではなくて「clickedButtonAtIndex」。ううむ。