Hi is there any library or special view in cocoa touch which help to create a popup window like when the istore ask you for your password and name?or is it transparent view with image 2 textfields and 2 buttons? I need it because i want to make my login screen similar. thanks
2 Answers
If you want to create a view that looks similar, your best bet is probably to create a UIAlertView subclass. You could create your own subclass and add the required elements.
Create a UIAlertView subclass like this in the header:
@interface LoginView : UIAlertView {
// instance vars
}
// methods and properties
@end
As for the implementation of LoginView, please keep in mind the following ...
In order to resize the UIAlertView to fit your contents (buttons, labels), you'd have to set the message text to some amount of empty lines, e.g. you could add 5 empty lines by doing the following on your UIAlertView subclass:
// This is a subclass of UIAlertView
@implementation LoginView
- (id)init
{
self = [super init];
if (self)
{
// add as many newlines as you need to fit
// the controls (buttons, labels, etc...)
[self setMessage: @"\n\n\n\n\n"];
CGRect frame = CGRectMake(10.0f, 10.0f, 200.0f, 30.0f);
UILabel *label = [[UILabel alloc] initWithFrame:frame];
[label setBackgroundColor:[UIColor clearColor]];
[label setText:@"Username:"];
[self addSubview:label]
[label release];
}
return self;
}
^ Just add buttons and labels like on any other UIView. Create an instance of this view and call the -show method to display the view, e.g.:
#import "LoginView.h"
- (void)displayLogin
{
LoginView *loginView = [[[LoginView alloc] init] autorelease];
[loginView show];
}
To make the LoginView more flexible, create a custom initializer which accepts a target (of type id) and selector (of type SEL). When someone presses the login button, make it use the target and selector to perform the actual login. Or put the login code in the LoginView itself and create a delegate that informs the caller whether a login was successful.
This approach is kind of 'hacky' with the empty line stuff, but the result looks very nice :)
P.S.: remember that when you create a view like this, you shouldn't call -setMessage: on the instance, as it will reset the size (frame) of the view (or override setMessage: on the subclass to prevent resizing). If you need some label to write text on, create your own label and add it as a subview.
- 11,779
- 7
- 51
- 92
-
hi it helped i found http://www.idev101.com/code/User_Interface/UIAlertView.html but now i do not understand why i can not add 6 or more linebreaks, because if i do so it throws me out big white view. – Csabi Apr 14 '11 at 11:37
-
Well, I guess if you followed the tutorial then you didn't create a subclass, there might be a few limitations if you do it like that. I suggest you try to _create a subclass_ like in my code example and in the **-init:** method set the message text to how many lines you need to fit the controls. I can add at least 10 lines (just tested it myself). – Wolfgang Schreurs Apr 14 '11 at 11:49
-
apple will reject your app if you add text field to alertview – Rahul Vyas Apr 16 '11 at 10:13