わかりました、私の間違いです。以前は、ivar が正しく変更されていないと信じていました。私は間違っていました(そして、それに対していくつかの反対票がありました)。申し訳ありませんが、本当の問題は、私が間違って呼んでいることです。私は今、すべてのコードを投稿しています。それを見てみましょう。
私の最初のクラス:
classOne.h:
@interface DetailPageController : UIPageViewController
{
BOOL isChromeHidden_;
}
- (void)toggleChromeDisplay;
@end
classOne.m:
@interface DetailPageController ()
@end
@implementation DetailPageController
- (void)toggleChromeDisplay
{
[self toggleChrome:!isChromeHidden_];
}
- (void)toggleChrome:(BOOL)hide
{
//Find chrome value
isChromeHidden_ = !isChromeHidden_;
NSLog(isChromeHidden_ ? @"YES" : @"NO");
}
@end
私が受け取ったコメントから、それは実際の問題ではないと思います。それは次のとおりです。
classTwo.h: (何も宣言されていません)
classTwo.m:
@interface classTwo ()
@end
@implementation classTwo
//Touches Control
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch view]) {
if ([touch tapCount] == 2) {
NSLog(@"double touched");
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(toggleChromeDisplay) object:nil];
}
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch view]) {
if ([touch tapCount] == 1) {
NSLog(@"single touch");
[self performSelector:@selector(toggleChromeDisplay) withObject:nil afterDelay:0.5];
}
}
}
- (void)toggleChromeDisplay
{
DetailPageController *pageController = [[DetailPageController alloc] init];
[pageController toggleChromeDisplay];
}
@end
繰り返しますが、以前の投稿で申し訳ありません。メソッドの問題だと思っていましたが、実際には私が呼び出している方法です。
私がしなければならなかったのは、タッチされた領域を処理するコントローラーにタッチを実装することですが、別の場所にクロム (ナビゲーション バーとツールバー) のメソッドがあります。
全体的な質問 classTwo で toggleChromeDisplay メソッドを呼び出すたびに、classOne の ivar から常に同じ NO を取得するのはなぜですか?
classTwo.h で試したこと:
#import "DetailPageController.h"
@interface classTwo : UIViewController
{
DetailPageController *detailPageController_;
}
@property (nonatomic, assign) DetailPageController *detailPageController;
@end
私の変更されたコード:
私のclassTwo.hでは:
#import "DetailPageController.h"
@interface PhotoViewController : UIViewController
{
DetailPageController *detailPageController_;
}
@property (nonatomic, strong) DetailPageController *detailPageController;
@end
classTwo.m:
#import "classTwo.h"
@interface classTwo ()
@end
@implementation classTwo
@synthesize detailPageController = detailPageController_;
//Touches Control
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch view]) {
if ([touch tapCount] == 2) {
NSLog(@"double touched");
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(toggleChromeDisplay) object:nil];
}
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch view]) {
if ([touch tapCount] == 1) {
NSLog(@"single touch");
[self performSelector:@selector(toggleChromeDisplay) withObject:nil afterDelay:0];
}
}
}
- (void)toggleChromeDisplay
{
[self.detailPageController toggleChromeDisplay];
}
@end