检测从其他ViewController中点击了哪个UIBarButton

时间:2013-03-25 18:12:12

标签: objective-c uipopovercontroller uibarbuttonitem

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

以下是我处理UIBarButton所使用的popover的方法。在(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
    }
}

1 个答案:

答案 0 :(得分:1)

我建议为您将要使用的初始制表符状态添加属性。基本上是:

@property NSInteger tabState;

然后你可以在初始化之后或在init函数中设置它。

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

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

然后在您的-viewDidLoad方法中,您可以触发self.tabState,并且您拥有状态信息,而不会与之前的视图紧密绑定。