开发者

Two switches in a window on iPhone

I've just started learning how to develop an iPhone app.

I'm trying to make an app with two switches. I made two classes (Switch1 & Switch2). First, I tested the app with one switch (Switch1), and the app worked. But when I made the second class (Switch2) and I Build/Run the app, the first switch (Switch1) disappeared, and what I saw just the second switch (Switch2).

After that I made the background of the (Switch1 & Switch2) celarColor, I could see both of switches. However, the first switch (Switch1) can't be switched.

so I thin开发者_JS百科k my problem is how to make both switches (Switch1 & Switch2) visible and working at the same time in the "window"

The question (could be stupid): What can I make them visible and working at the same time? I think the problem in the following code: This is from the AppDelegate

UIScreen *s1 = [UIScreen mainScreen];
view1 = [[Switch1 alloc] initWithFrame: s1.applicationFrame];
window = [[UIWindow alloc] initWithFrame: s1.bounds];

[window addSubview: view1];
[window makeKeyAndVisible];


UIScreen *s2 = [UIScreen mainScreen];
view2 = [[Switch2 alloc] initWithFrame: s2.applicationFrame];
window = [[UIWindow alloc] initWithFrame: s2.bounds];

[window addSubview: view2];
[window makeKeyAndVisible];
return YES;

Here is the Switch1.h #import

@interface Switch1 : UIView {
UISwitch *mySwitch1;

}

@property (nonatomic, retain) IBOutlet UISwitch *mySwitch1;

@end

Here is the Switch1.m

#import "Switch1.h"

@implementation Switch1
@synthesize mySwitch1;

- (id) initWithFrame: (CGRect) frame {
if ((self = [super initWithFrame: frame])) {
// Initialization code
self.backgroundColor = [UIColor clearColor];

mySwitch1 = [[UISwitch alloc] initWithFrame: CGRectZero];
if (mySwitch1 == nil) {
[self release];
return nil;
}

    mySwitch1.on = NO;  //the default

    [mySwitch1 addTarget: [UIApplication sharedApplication].delegate
                 action: @selector(valueChanged:)
       forControlEvents: UIControlEventValueChanged
     ];

CGRect b1 = self.bounds;

mySwitch1.transform = CGAffineTransformMakeScale(2, 2);
mySwitch1.center = CGPointMake(
b1.origin.x + b1.size.width / 2,
b1.origin.y + b1.size.height / 2
);

[self addSubview: mySwitch1];
}
return self;
}

/*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.
 - (void) drawRect: (CGRect) rect {
 // Drawing code
 }
 */

 - (void) dealloc {
[mySwitch1 release];
[super dealloc];
}

@end


You might want to configure a view controller with a view and then toss your two switches on that first. Do you understand the MVC patterns here: https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

and here's the view controller guide: https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html.

When you're initializing with UIScreen, you're making both switches the same size (the window size) and thus switch 2 is over switch 1 since it's initialized second.


So you are adding one screen (s2) on top of another screen (s1) and therefore you are not able to access s1. You need to make the size of s2 and s1 smaller so that they do not take the whole screen size.

Also by saying makeKeyAndVisible you make the window visible and able to accept user interaction. No need to say that twice.


You're resetting the window when you call

window = [[UIWindow alloc] initWithFrame: s2.bounds];

s1 isn't there anymore because you've created a new window over it. You could just do

UIScreen *s1 = [UIScreen mainScreen];
window = [[UIWindow alloc] initWithFrame: s1.bounds];

view1 = [[Switch1 alloc] initWithFrame: s1.applicationFrame];
view2 = [[Switch2 alloc] initWithFrame: s2.applicationFrame];

[window addSubview: view1];
[window addSubview: view2];

[window makeKeyAndVisible];

return YES;

If you're just starting, definitely check out this tutorial on iPhone dev. It shows how to use UIViewController, UIView, and a lot of the supplied classes for the iPhone like UITableView and UIImageView.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜