IBAction与IF声明相关联

use*_*928 0 annotations if-statement ibaction ios

我有2个不同的按钮,可以在一个mapview中触发一组不同的注释.我有一些淡出按钮的动作方法,在这一点上应该出现一个注释,但是我无法弄清楚如何在注释方法中说"如果激活了这个动作,那么从这个类加载注释".所以这是我目前的代码

- (void)queryForAllPostsNearLocation:(CLLocation *)currentLocation withNearbyDistance:(CLLocationAccuracy)nearbyDistance {
if (????? IBAction 1 is activated ?????) {
    NSString *button1 = @"Today";
}
if (????? IBAction 2 is activated ?????) {
    NSString *button1 = @"Tomorrow";
}
PFQuery *query = [PFQuery queryWithClassName:button1];
Run Code Online (Sandbox Code Playgroud)

我希望我能正确地传达我的问题,有人可以帮助我.

Lyn*_*ott 6

如果你问的是我认为你在问什么,而且"激活"你的意思是"已被触动"/"已被选中",你就是在向后做事.不要检查方法中是否选择了按钮,而是queryForAllPostsNearLocation让按钮触发必要的查询.在下面的例子中,我已经制作button1button2对应了UIButtons,我已经替换NSString *button1NSString *buttonText只是为了让事情更清晰一点.

- (IBAction)buttonSelected:(id)sender {
    NSString *buttonText;
    if (sender == button1)
        buttonText = @"Today";
    else
        buttonText = @"Tomorrow";

    PFQuery *query = [PFQuery queryWithClassName:buttonText];
}
Run Code Online (Sandbox Code Playgroud)

编辑:为了在这种情况下完成您想要的查询,您可以(1)将currentLocation和nearbyDistance存储为类变量,然后在其中访问它们buttonSelected以完成查询或(2)您可以在其中调用currentLocationnearbyDistancebuttonSelected像这样的方法

// Modified to now include the button's text as an argument
-(void)queryForAllPostsNearLocation:(CLLocation *)currentLocation withNearbyDistance:(CLLocationAccuracy)nearbyDistance withButtonText(NSString*)buttonText
Run Code Online (Sandbox Code Playgroud)

从内部buttonSelected,然后从那里执行查询.