基礎となるアルゴリズムの実行中に異なる色を想定する 2 セットの正方形 (チェスのようなグリッド) で構成される Cocoa UI を作成しようとしています。アルゴリズムの実行が終了すると、UI はクリック、パン、その他のジェスチャを処理できる必要があります。
これまでの階層は次のとおりです (詳細については、添付のコードを確認してください)。
1) ウィンドウコントローラのウィンドウであるメインウィンドウ
2) mainView と sideView の 2 つのカスタム ビューを含む分割ビュー (それぞれが正方形のセットを保持します)
3) 2 つのビュー コントローラー (mainViewController と sideViewController)
mainView と sideView のサブビューとして正方形を読み込めるようにしたいと思います。
私は別のカスタム ビューを考えました。たとえば、SquareView と別の nib ファイルを使用します。私の質問は次のとおりです。
a) チェスのようなグリッドを形成するサブビューとして mainView および sideView に追加される正方形を作成するために使用できるように、この SquareView を作成するにはどうすればよいですか?
b) サブビューを mainView と sideView に追加して 2 つのグリッドを構築するにはどうすればよいですか? 簡単にするために、前述の各ビューに 4 つの重複しない正方形があると仮定しましょう。
ありがとうございました!
MainView.m
#import "MainView.h"
@implementation MainView
- (void)drawRect:(NSRect)TheRect
{
[[NSColor grayColor] set];
[NSBezierPath fillRect:[self bounds]];
}
SideView.m
#import "SideView.h"
@implementation MainView
- (void)drawRect:(NSRect)TheRect
{
[[NSColor whiteColor] set];
[NSBezierPath fillRect:[self bounds]];
}
MainWindowController.h
#import <Cocoa/Cocoa.h>
@class SideViewController;
@class MainViewController;
@interface MainWindowController : NSWindowController
{
IBOutlet NSSplitView* oMainSplitView;
SideViewController* sideViewController;
MainViewController* mainViewController;
}
@end
MainWindowController.m
#import "MainWindowController.h"
#import "SideViewController.h"
#import "MainViewController.h"
@implementation MainWindowController
- (void)windowDidLoad
{
sideViewController = [[SideViewController alloc] initWithNibName:@"SideView" bundle:nil];
NSView* splitViewLeftView = [[oMainSplitView subviews] objectAtIndex:0];
NSView* sideView = [sideViewController view];
[sideView setFrame:[splitViewLeftView bounds]];
[sideView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[splitViewLeftView addSubview:sideView];
mainViewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
NSView* splitViewRightView = [[oMainSplitView subviews] objectAtIndex:1];
NSView* mainView = [mainViewController view];
[mainView setFrame:[splitViewRightView bounds]];
[mainView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[splitViewRightView addSubview:mainView];
}