【发布时间】:2009-08-03 19:49:12
【问题描述】:
有没有办法直接从标签栏调用 ActionSheet。我正在开发一个程序,用户希望标签栏上有一个联系按钮,该按钮显示带有适当按钮的操作表。
提前致谢
【问题讨论】:
-
它应该是一个工具栏,你有联系按钮而不是标签栏。
标签: iphone objective-c uitabbarcontroller uitabbar
有没有办法直接从标签栏调用 ActionSheet。我正在开发一个程序,用户希望标签栏上有一个联系按钮,该按钮显示带有适当按钮的操作表。
提前致谢
【问题讨论】:
标签: iphone objective-c uitabbarcontroller uitabbar
难道你不能让一个视图控制器与其中一个选项卡相关联,然后让它的视图保持原样,并在 viewDidLoad 中创建 actionSheet?
【讨论】:
我同意上述所有人的观点,即这不是一个好主意(应该使用工具栏来完成),但这绝对是可行的。
下面的代码实现了其中一个 UITabBarControllerDelegate 方法,并避免了标签栏项目的选择,而是创建并显示了一个 UIActionSheet:
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
{
NSInteger choice = 0; // --> index of the view controller that should "act as button"
if (viewController == [tabBarController.viewControllers objectAtIndex:choice])
{
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Send e-mail", @"Twitter", @"Whatever", nil];
[sheet showFromTabBar:tabBarController.tabBar];
return NO;
}
return YES;
}
【讨论】:
一个例子是邮件应用程序,当您查看电子邮件并点击弯曲箭头按钮以调出“转发 - 回复”操作表。
【讨论】:
我想我能理解史蒂夫的目的。我通过 TabBarController 中的第一个元素进行了主要活动。我希望第二个标签栏元素有选择地添加 modalview 电子邮件、对 facebook 的访问或对 twitter 的访问。如果该选择是通过操作表提供的,这样就不会忽视第一个视图控制器(来自第一个选项卡栏选项)的“背后”,然后处理该选择的新视图控制器出现。例如,当您想“分享”一篇新闻文章时,这似乎是“AP mobile”所做的。
@Adrian :我无法让您的解决方案开箱即用......但后来发现了原因(继续阅读......)
(显然)专门从 Outlet:delegate 拖到文件所有者没有帮助 你会得到: *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不允许更改由标签栏控制器管理的标签栏的委托。”
在我将 UITabBarControllerDelegate 添加到接口定义之前,我的委托方法被忽略了(UIApplicationDelegate 已经存在,我没有进一步阅读)... 和 在 applicationDidFinishLaunching 我添加了
[rootController setDelegate:self];
干杯。
【讨论】: