gpt4 book ai didi

objective-c - iOS iPad UIActionSheet问题

转载 作者:行者123 更新时间:2023-12-01 17:33:55 25 4
gpt4 key购买 nike

我目前正在开发一个应用程序,需要使用多个服务“共享”的选项。例如电子邮件,推特。

为此,我输入了一个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]中插入零个对象

最佳答案

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionPhotoShare:)] autorelease];

...
-(void)actionPhotoShare:(id)sender
{
actionSheetShare = [[UIActionSheet alloc] initWithTitle:nil
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:NSLocalizedString(@"ActionSheet_Cancel", @"")
otherButtonTitles:NSLocalizedString(@"ActionSheet_Email", @""),nil];

if (IS_DEVICE_IPAD) {
[actionSheetShare showFromBarButtonItem:sender animated:YES];
}else {
[actionSheetShare showInView:self.view];
}
}

关于objective-c - iOS iPad UIActionSheet问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com