現在、複数のサービスを使用して「共有」するオプションが必要なアプリケーションを開発しています。メール、ツイッターなど。
これには、UIBarButtonItem
コード化されており、タッチすると、これがトリガーされます。
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:@""
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[sheet addButtonWithTitle:@"Email"];
[sheet addButtonWithTitle:@"Tweet"];
[sheet addButtonWithTitle:@"Cancel"];
sheet.cancelButtonIndex = sheet.numberOfButtons-1;
[sheet showFromRect:self.view.bounds inView:self.view animated:YES];
[sheet release];
これと組み合わせて、どのボタンが選択されているかを検出します。
clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == actionSheet.cancelButtonIndex) { return; }
switch (buttonIndex) {
case 0:
{
[self emailThis];
break;
}
case 1:
{
[self tweetThis];
break;
}
}
これは、iPhone でうまく機能します。残念ながら、iPad では正しく表示されません。を表示しようとしているように見えますがUIPopoverController
、実質的に高さのないナビゲーションバーの中央に配置されています。
UIPopoverController の使用方法を調べましたが、ボタンでの使用方法がわかりません。とにかく、上記のコードを調整して、ボタンを適切に表示できるようにすることはできますか?
どうもありがとう、
ライアン
PS: Objective-C/iOS コーディングは初めてなので、具体的に教えてください。ありがとうございました :)
編集: 私は使用してみました:
[sheet showFromBarButtonItem:[self share] animated:YES];
しかし、うまくいきません。ボタンのコードは次のとおりです。
UIBarButtonItem *share = [[UIBarButtonItem alloc]
initWithTitle:@"Share"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(loadShare)];
self.navigationItem.rightBarButtonItem = share;
[share release];
また、.h ファイルのコードは次のとおりです。
@interface DetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
UIBarButtonItem *share;
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem *share;
デバッグエラーは次のとおりです。
キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: ' * -[__NSPlaceholderArray initWithObjects:count:]: オブジェクト [0] から nil オブジェクトを挿入しようとしています'