1

我想UIActionSheetUIView. 我正在将 Facebook 集成到我的应用程序中,登录按钮 (FBLoginView) 是UIView. 我想将此视图用作UIActionSheet. 这可能吗?

编辑:我正在尝试在我的应用程序中集成 facebook 共享。为此,我必须使用他们的 sdk。对于登录 facebook,他们提供了自己的自定义视图,称为“FBLoginView”,它已作为 UIView 的子类。我只需要分配内存并将这个视图添加到我自己的视图中。然后点击view会调用sdk中提供的所有功能,打开fb app或者safari,询问登录密码等,然后再回到app。

现在我想把这个按钮放在 UIActionSheet 中。在工作表中,我没有看到自定义按钮的选项。即使有一个选项,我如何使用 UIView 来创建 UIButton?

4

2 回答 2

0

我在 StackOverflow 上从另一个用户那里找到了这个,你可能会发现它很有用,就像我一样

将 UIView 添加为 UIActionSheet 上的子视图

祝你好运,如果您找到任何其他解决方案,请告诉我们:)

更新:我会远离 UIACtionSheet,因为它在 iOS 8 以后已被弃用。您现在需要使用 UIAlertController。我会使用这样的东西:

UIAlertController * alert=[UIAlertController alertControllerWithTitle:@"Connection Method"
                                                              message:@"Select Connection Method"
                                                       preferredStyle:UIAlertControllerStyleActionSheet];
//These will essentially be the buttons that we used to create for UIActionSheet. They are created pretty much the same way as how they used to,
//but you have to declare their corresponding action here too.

UIAlertAction* firstAction = [UIAlertAction actionWithTitle:@"Title1"
                                                      style:UIAlertActionStyleDefault
                                                    handler:^(UIAlertAction * action) {
                                                        declaredVariable = NO;
                                                        [alert dismissViewControllerAnimated:NO completion:nil];
                                                        [self doSomethingHereOrExecuteTheFunctionYouNeed];
                                                    }];
UIAlertAction* secondAction = [UIAlertAction actionWithTitle:@"Title2 and so on"
                                                       style:UIAlertActionStyleDefault
                                                     handler:^(UIAlertAction * action) {
                                                         BOOL newVarable = YES;
                                                         [alert dismissViewControllerAnimated:NO completion:nil];
                                                         [self followAlertControllerChoice];
                                                     }];

UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel button"
                                                 style:UIAlertActionStyleCancel
                                               handler:^(UIAlertAction * action) {
                                                   [alert dismissViewControllerAnimated:YES completion:nil];
                                               }];
//Add buttons ("Actions") here
[alert addAction:firstAction];
[alert addAction:secondAction];
[alert addAction:cancel];

//Finally, present your alertcontroller
[self presentViewController:alert animated:YES completion:nil];

AFAIK,您只能将文本字段添加到警报控制器,您可以这样做:

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
    textField.placeholder = @"Enter your text here";
    textField.textAlignment = NSTextAlignmentLeft;

//如此等等 }];

显然,Apple 不希望我们将 UIAlertController 子类化,如下所示

UIAlertController 类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

于 2014-08-17T15:55:36.147 回答
0

乱来可不是个好主意UIActionSheet

来自UIActionSheet 类参考

子类化注释

UIActionSheet 不是为子类而设计的,也不应该将视图添加到它的层次结构中。如果您需要呈现比 UIActionSheet API 提供的自定义更多的表单,您可以创建自己的表单并使用 presentViewController:animated:completion: 以模态方式呈现它。

有相当多的操作表替换。查看https://www.cocoacontrols.com/search?q=uiactionsheet以获取起始列表。

我的建议是找一个你喜欢的功能而不是黑客UIActionSheet

于 2014-08-17T16:07:57.790 回答