【问题标题】:presentPopoverFromBarButtonItempresentPopoverFromBarButtonItem
【发布时间】:2012-07-05 20:31:26
【问题描述】:

每当用户单击按钮时,我都会尝试显示我的弹出菜单。

我有两种方法,第一种创建按钮

- (void)viewDidLoad {

    [super viewDidLoad];

    UIBarButtonItem *btnMenu = [[UIBarButtonItem alloc]initWithTitle:@"Forms List" style:UIBarButtonItemStyleBordered target:self action:@selector(showPopover:)];
    self.navigationItem.leftBarButtonItem = btnMenu;

}

第二个被第一个调用,显示弹出框

-(IBAction)showPopover:(id)sender{

    NSLog(@"called with %@", sender);
    self.popoverController = popoverController;
    popoverController.delegate = self;
    [popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

}

目前,当我单击该按钮时,没有任何反应。我认为问题在于第二种方法,主要是presentPopoverFromBarButtonItem这一行。

任何帮助将不胜感激,我真的不明白该方法调用是如何工作的。

谢谢。

编辑 1:

这是我(认为)初始化 popoverController 的代码

@interface DetailViewController ()
@property (nonatomic, retain) UIPopoverController *popoverController;
- (void)configureView;
@end

@implementation DetailViewController

@synthesize toolbar, popoverController, detailItem, detailDescriptionLabel;

【问题讨论】:

  • 显示创建弹出框控制器的代码。到目前为止,您显示的代码看起来不错。
  • 这一行:self.popoverController = popoverController; 与您的问题无关,但看起来像是做错了什么。大概你有一个接口变量popoverController 以及一个同名属性;该属性应与@synthesize 语句中的接口变量相关联,然后您将(通常)仅在代码中的其他任何地方引用self.popoverController
  • 我编辑了它。我首先在.m中声明了popoverController,然后我在.h中设置了属性和合成

标签: objective-c ios ipad uipopovercontroller


【解决方案1】:

你初始化你的UIPopoverController了吗?

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:VCTHATGOESINSIDE];

如果所有其他方法都失败,请尝试从 rect 显示它并指定 CGRect。希望这会有所帮助!

编辑:initWith*内容*ViewController

【讨论】:

  • 对不起我的愚蠢,但是 VCTHATGOESINSIDE 是什么?
  • 我应该解释得更好,我的错。 UIPopoverController 需要使用 ContentViewController (UIViewController) 进行初始化,这就是您想要在弹出框矩形内显示的内容。
  • 那么(如果你看一下我在 OP 中所做的编辑),我对 *popoverController 的声明是不完整的吗?
  • 是的。它需要按照我的回答进行初始化。我给你举个例子。 aTableViewController *myTable = [[aTableViewController alloc] init]; UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:myTable];
  • 啊啊啊啊好吧。我已经有一个表格视图控制器,这就是我想要显示的。谢谢,你的例子很清楚!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多