2 つのプロジェクトを含むワークスペースがあります。最初のプロジェクトは、本質的にはテストと開発のプロジェクトであり、実際にすべてを結びつけることを心配する前に、物事を機能させました。2 番目のプロジェクトでは、個別に開発したすべてのビュー コントローラーをストーリーボードにまとめます。
ビュー コントローラーの 1 つで、読みやすくするために適切にフォーマットされたかなりの数の UIView アニメーション呼び出しを含むスワイプ ジェスチャが多数あるため、多くのスペースを占有します。私はそれらをカテゴリから除外することにしました。
問題は、コンパイラがメイン ヘッダー ファイル内のインスタンス変数宣言を認識していないことです。
私が髪を引っ張っているのは、最初のプロジェクトでこれを行い、すべて正常に機能したことです。そのため、2 番目のプロジェクトの内容を最初のプロジェクトと注意深く比較していますが、違いはありません。
ここに、私が物事を定義する方法/場所を示すのに役立ついくつかのファイル スニペットと、それらにアクセスしようとしているカテゴリ ファイル内のコード スニペットがあります。
GSBViewController.h
@interface GSBViewController : UIViewController
@property (strong, nonatomic) IBOutlet UISegmentedControl *roundPicker;
@property (strong, nonatomic) IBOutlet UIView *roundsSectionView;
GSBViewController.m
#import "GSBViewController+Swipe.h"
@interface GSBGameBuilderViewController ()
{
UIBarButtonItem *rightGatherBarButton;
NSInteger previousRound;
}
@end
@implementation GSBViewController
@synthesize roundPicker;
@synthesize roundsSectionView;
GSBViewController+Swipe.h
#import "GSBViewController.h"
@interface GSBViewController (Swipe)
- (void)establishSwipeGestures;
@end
GSBViewController+Swipe.m
#import "GSBViewController+Swipe.h"
@implementation GSBViewController (Swipe)
- (void)establishSwipeGestures
{
UISwipeGestureRecognizer *swipeLeft =
[[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(roundsSectionLeft:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[swipeLeft setNumberOfTouchesRequired:1];
[roundsSectionView addGestureRecognizer:swipeLeft];
// bunch-o-code snipped -- for the time being it's actually all commented out
// as a test and because the LLVM compiler was giving up after too many errors
// and I wanted to see if there was more it would like to tell me about this first --
// and very representative -- problem.
}
@end
コンパイラからの苦情は、「宣言されていない識別子 'roundsSectionView' の使用」です。
ジェスチャ認識エンジンを追加しているコード行で roundsSectionView の使用をオプションクリックすると、ポップアップは GSBViewController.h で宣言されているようにそれを正しく説明します
だから私は困惑しています。
含まれているファイルが何であるかを確認するために、Xcode (この投稿の時点で 4.3.2 :-) でできることはありますか? または、カテゴリを拡張しているクラスに結び付けるために必要なファイルベース以外のものはありますか? そのようなものが以前に必要だったのを覚えていません。実際、このカテゴリのファイルを生成する方法は、Xcode の File -> New File... Objective-C カテゴリ テンプレートを使用することでした。次に、古い ...+Swipe.h および ...+Swipe.m ファイルの内容をコピーして、新しいプロジェクトのそれぞれのファイルに貼り付けました。