我目前正在开发一个需要使用多种服务“共享”选项的应用程序;例如电子邮件、推特。
为此,我有一个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 对象”