使用目标c中的CAPSPageMenu检测我们在哪个选项卡中

时间:2019-02-22 05:39:27

标签: ios objective-c iphone xcode boolean

我正在使用带有2个标签的CAPSPageMenu。现在在右栏按钮上有一个按钮。每当我单击该按钮时,我都会看到一个名为sayHello的按钮。现在,当我单击该按钮时,我需要知道我所在的选项卡。那个条形按钮同时用于两个选项卡。但是,当我单击该sayHello时,如何检查我是哪个选项卡。

代码:

在我的homevc中,我添加了两个标签。

VC1, VC2 ..

然后我尝试在nsuserdefault中的bool上添加的viewwillAppear中尝试获取。但是,布尔总是以TRUE的形式出现。我是哪个标签-仍然是我的真实布尔值。这里是代码:

vc1

-(void)viewWillAppear:(BOOL)animated {
    userDefault = [NSUserDefaults standardUserDefaults];
    [userDefault setBool:TRUE forKey:@"fromVC1"]; // Tried true, YES also
    NSLog(@"from vc1");
}

vc2

-(void)viewWillAppear:(BOOL)animated {
        userDefault = [NSUserDefaults standardUserDefaults];
        [userDefault FALSE forKey:@"fromVC1"];  // Tried false, No also
        NSLog(@"from vc1");
    }

我正在检查:

BOOL Val;

userDefault = [NSUserDefaults standardUserDefaults];
Val = [userDefault objectForKey:@"fromVC1"];



 if (Val) {
     NSLog(@"from VC1");
 }else {
      NSLog(@"from VC2");
 }

但总是以True的形式出现。任何想法如何获得?我以前是哪个标签。当我按下按钮sayHello时。

- (void)didTapGoToLeft {
    NSInteger currentIndex = self.pageMenu.currentPageIndex;

    if (currentIndex > 0) {
        [_pageMenu moveToPage:currentIndex - 1];
    }
}
//
- (void)didTapGoToRight {
    NSInteger currentIndex = self.pageMenu.currentPageIndex;

    if (currentIndex < self.pageMenu.controllerArray.count) {
        [self.pageMenu moveToPage:currentIndex + 1];
    }
}

2 个答案:

答案 0 :(得分:1)

如果您符合CAPSPageMenu的委托,则会获得带有以下两种委托方法的标签。

// Optional delegate 
- (void)willMoveToPage:(UIViewController *)controller index:(NSInteger)index {}

- (void)didMoveToPage:(UIViewController *)controller index:(NSInteger)index {}

例如

最初,您需要告诉编译器您的类实现了该协议:

@interface ViewController : UIViewController<CAPSPageMenuDelegate>

@property (nonatomic) CAPSPageMenu *pagemenu;

此后,您需要与代表保持一致

_pageMenu.delegate = self;

最后根据需要访问该委托。

  (void)didMoveToPage:(UIViewController *)controller index:(NSInteger)index { 

    NSLog(@"controller: %@", controller);
    NSLog(@"tabbed Index : %d", index);
 }

有关逐步介绍:https://github.com/PageMenu/PageMenu/blob/master/README.md

答案 1 :(得分:0)

我完全同意@ Anbu.Karthik。 Karthik的实现

但是我想回答,当userDefault出现时,您总是得到TRUE值

因为没有提供完整的方法上下文来读取userDefault值。 因此,我不知道这是否是由于调用生命周期造成的,但是如果您尝试编写userDefault方法以将viewDidAppear:(BOOL)动画化,我相信您会获得期望的值。

示意图代码:

- (void)viewDidAppear:(BOOL)animated {

    BOOL value;

    NSUserDefaults* userDefault = [NSUserDefaults standardUserDefaults];
    value = [userDefault objectForKey:@"fromVC1"];

}

希望我能帮助您