如何附加多个控制器以查看其子视图

时间:2009-09-11 09:08:18

标签: iphone objective-c

请帮助我 我是iphone开发的新手,是我的第二个示例代码。我正在尝试将子视图添加到视图并根据触摸的视图/子视图生成事件。我在主视图中添加了子视图,并且所有子视图一次显示所有子视图。我正在尝试的项目是一个新创建的,干净的Window-Base应用程序。

我将以下代码写入了唯一一个viewController的代码:

@interface testViewController : UIViewController {

IBOutlet UIView *blueView1;
IBOutlet UIView *blueView2;
       :                        :
IBOutlet UIView *blueView6;

}

// ---将插座暴露为属性---

@property(nonatomic,retain)IBOutlet UIView * blueView1;

@property(非原子,保留)IBOutlet UIView * blueView2;

      :                      :      *blueView6;

// ---宣布行动--- - (IBAction)viewClicked:(id)sender;

@end

它的.m文件包含(loadView方法,我在其中附加子视图。它们一次显示很好。我想要做的是当我的视图/子视图被触摸时它们将生成一个事件这个方法应该根据它们的对象来处理,这将相应地改变视图/子视图的背景颜色。

- (void)loadView {

self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,80)];

self.view.backgroundColor = [UIColor greenColor];

//创建一个简单的蓝色方块

CGRect blueFrame0 = CGRectMake(5,115,100,100);

UIView * blueView0 = [[UIView alloc] initWithFrame:blueFrame0];

blueView0.backgroundColor = [UIColor blueColor];

//创建一个简单的蓝色方块

CGRect blueFrame1 = CGRectMake(110,115,100,100);

UIView * blueView1 = [[UIView alloc] initWithFrame:blueFrame1];

blueView1.backgroundColor = [UIColor blueColor];

//创建一个简单的蓝色方块

CGRect blueFrame2 = CGRectMake(215,115,100,100);

UIView * blueView2 = [[UIView alloc] initWithFrame:blueFrame2];

blueView2.backgroundColor = [UIColor blueColor];

// --------------------------------------------- -------------------------------------------------- ------------

//创建一个简单的蓝色方块

CGRect blueFrame3 = CGRectMake(5,220,100,100);

UIView * blueView3 = [[UIView alloc] initWithFrame:blueFrame3];

blueView3.backgroundColor = [UIColor blueColor];

//创建一个简单的蓝色方块

CGRect blueFrame4 = CGRectMake(110,220,100,100);

UIView * blueView4 = [[UIView alloc] initWithFrame:blueFrame4];

blueView4.backgroundColor = [UIColor blueColor];

//创建一个简单的蓝色方块

CGRect blueFrame5 = CGRectMake(215,220,100,100);

UIView * blueView5 = [[UIView alloc] initWithFrame:blueFrame5];

blueView5.backgroundColor = [UIColor blueColor];

[self.view addSubview:blueView0];

[self.view addSubview:blueView1];

[self.view addSubview:blueView2];

[self.view addSubview:blueView3];

[self.view addSubview:blueView4];

[self.view addSubview:blueView5];

[blueView0发布];

[blueView1发布];

[blueView2发布];

[blueView3发布];

[blueView4发布];

[blueView5发布];

[self.view release];

} - (IBAction)viewClickedid)sender {

{view / subview} .backgroundColor = [UIColor blackColor];

}

我以这种方式劝告代表

@interface testAppDelegate : NSObject <UIApplicationDelegate>

{

UIWindow * window;

testViewController * viewController; //用于主视图

testViewController * viewController1; //用于subview1

testViewController * viewController2; //用于subview2

testViewController * viewController3; //用于subview3

**最多6个控制器

}

@property(nonatomic,retain)IBOutlet UIWindow * window;

@property(nonatomic,retain)IBOutlet testViewController viewController;

@property(nonatomic,retain)IBOutlet testViewController viewController1;

**最多6个控制器

@end

在testAppdelegate.m中我正在为主视图制作一个控制器,但我不知道如何将其他控制器连接到其他subviews.right现在,当我触摸视图上的任何地方时,主视图颜色会发生变化。 如何才能唯一识别不同的子视图触摸并使其颜色发生变化?如何做到这一点????

- (void)applicationDidFinishLaunching:(UIApplication *)application {    


// Override point for customization after application launch

checkAppController *rootController = [checkAppController alloc];


[window addSubview:[rootController view]];

[window makeKeyAndVisible];

}

我正在接受此方法中的所有触摸事件

- (void)touchesBeganNSSet *)touches withEventUIEvent *)event {

UITouch * touch = [触及anyObject];

NSUInteger numTaps = [touch tapCount];

if([touches count]&gt; 1)

NSLog(@“mult-touches%d”,[touches count]);

if(numTaps&lt; 2){

} 别的{

NSLog(@“双击”);

}

}

1 个答案:

答案 0 :(得分:1)

这与您构建应用程序的方式有关。对于由单独的视图控制器处理的BlueView1..6,需要创建视图的是视图控制器。

您需要为主视图控制器内的每个蓝色视图创建视图控制器,然后在每个蓝色视图控制器内的蓝色视图内创建每个蓝色视图。