1

我有 4 个 UIBarButtons,点击时会显示 PopoverController。根据点击的按钮,我必须显示不同的弹出框内容,这必须在 PopoverController viewDidLoad 方法中完成。

这是我处理 UIBarButton 轻按的弹出窗口的方式。在 (VC1.m)

[PopoverController presentPopoverFromBarButtonItem:[self.navigationItem.rightBarButtonItems objectAtIndex:[self.navigationItem.rightBarButtonItems count] -1]
                                 permittedArrowDirections:UIPopoverArrowDirectionAny
                                                 animated:YES];

我想把条件放在 viewDidLoad,(PopoverController.m)

- (void)viewDidLoad {
   [super viewDidLoad];
   if ([super.navigationItem.rightBarButtonItems objectAtIndex:[self.navigationItem.rightBarButtonItems count] -1]) {
      // Trigger method# 1
    }
    else {
      // Trigger method# 2
    }
}
4

1 回答 1

1

我建议为您将要使用的初始选项卡状态添加一个属性。基本上:

@property NSInteger tabState;

然后,您可以在初始化后立即设置,也可以在 init 函数中设置。

假设PopoverController在上面的代码中是UIPopoverController您在某处实例化的子类,您可以更改 init 函数(通常在调用 init 期间将选项卡状态传递– initWithContentViewController:– initWithContentViewController:tabState:然后传入:

– initWithContentViewController:(UIViewController*)vc tabState:(NSInteger)newTabState
{
     self = [super initWithContentViewController: vc];
     if (self) {
         self.tabState = newTabState;
     }
     return self;
}

然后在您的-viewDidLoad方法中,您可以触发self.tabState您的状态信息,而无需与先前视图紧密绑定。

于 2013-03-25T19:44:43.657 回答