【问题标题】:iOS5: A UIPopover/Sliptview issue after upgrade to iOS5 in xcodeiOS5:在 xcode 中升级到 iOS5 后出现 UIPopover/Sliptview 问题
【发布时间】:2011-11-03 17:29:55
【问题描述】:

当我在 ipad 上运行我的应用程序时将我的 iPad 和 xcode 更新到最新版本 iOS5 和 xcode 4.2 后,在横向视图中,分屏可以正常工作,而当我将其旋转到纵向视图然后按下按钮时/menu icon 我得到了弹出窗口,但没有内容只是弹出窗口的顶部出现。见附图

菜单按钮不是通过代码生成的,普通按钮如下:

   -(void)viewMenu:(id)sender{

      [self.popoverController presentPopoverFromRect:self.view.frame 
                        inView:self.view
                        permittedArrowDirections:UIPopoverArrowDirectionUp
                        animated:YES];
      [self.popoverController presentPopoverFromRect:CGRectMake(10.0f, 50.0f, 10.0f, 10.0f) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
  }

菜单列表通过 plist 代码填充。

多一点splitview代码如下:

   - (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
   {
       barButtonItem.title = @"Menu";
       self.toolbar.tintColor = [UIColor colorWithRed:254.0/255.0 green:193.0/255.0 blue:32.0/255.0 alpha:1.0];
       self.toolbar.hidden = YES;
       NSMutableArray *items = [[self.toolbar items] mutableCopy];
       [items insertObject:barButtonItem atIndex:0];
       [self.toolbar setItems:items animated:YES];
       [items release];
       self.popoverController = pc;
        viewMenu.hidden = NO;
   }

   // Called when the view is shown again in the split view, invalidating the button and popover controller.
   - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
   {
       NSMutableArray *items = [[self.toolbar items] mutableCopy];
       [items removeObjectAtIndex:0];
       [self.toolbar setItems:items animated:YES];
       [items release];
       self.popoverController = nil;
        viewMenu.hidden = YES;

   }

有什么想法,我该如何解决这个问题?

【问题讨论】:

  • 在viewMenu中,为什么presentPopoverFromRect被调用了两次?第二个调用看起来是正确的。

标签: ios5 uisplitviewcontroller xcode4.2


【解决方案1】:

正如我的问题下方的评论中提到的那样,我的问题是由重复的代码引起的,在我整天盯着代码之后,我终生看不到。

非常感谢 Anna Karenina 的观察,很遗憾我不能投票给评论。

重复的代码和我需要删除的代码在上面的第一批中,删除重复后的正确代码如下所示。

   -(void)viewMenu:(id)sender{
        [self.popoverController presentPopoverFromRect:CGRectMake(10.0f, 50.0f, 10.0f, 10.0f) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    }

再次感谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多