在NSObject类中显示UIAlertView类
我在我的应用程序中构建了一个登录系统,该系统将被多次调用。因此,我不是将代码复制粘贴到多个位置,而是制作NSObject类,以便在需要时调用该类,而不是。在NSObject类中显示UIAlertView类
登录系统将显示一个UIAlertView,当点击“OK”时,系统将尝试登录。我可以调用该类并显示UIAlertView,但我无法分辨哪些按钮被点击。这里是我的代码:
//Calling the login system
Login *login = [[Login alloc] init];
Login.h:
#import <Foundation/Foundation.h>
@interface Login : NSObject <UIAlertViewDelegate> {
}
@end
Login.m:
#import "Login.h"
@implementation Login
+(void)initialize {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
NSLog(@"Testing");
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"Here");
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"OK"]) {
NSLog(@"Tapped");
}
}
@end
现在,之前我把UITextFields在视图中,我只是想让应用知道哪个按钮被点击了。 Testing
出现在日志中,但不会出现Here
和Tapped
。谢谢!
您的警报视图不应该被类方法+(void)初始化,而是通过实例 - (id)init方法调用,这就是为什么你的实例没有得到通知。
类加载时调用类方法“+(void)initialize”。
实例方法“ - (id)init”的名字以init开始,并在创建(实例化)对象时调用。
-(id)init {
//alert view
self = [super init];
return self;
}
感谢您的帮助。对于阅读此答案的人:将+(void)初始化为 - (id)init。 – 2012-03-31 17:13:27
根据@JackLawrence评论 – moxy 2012-03-31 17:36:30
只是
switch(buttonIndex){
case 0:
NSLog(@"Tapped First Button");
break;
case 1:
break;
default:
break;
}
当你在你指的是类本身,而不是类的实例类方法使用self
。但是,您的委托方法是一种实例方法。您可能希望调用者创建一个Login实例并让该实例创建警报,再加上它的委托。
很简单:
在.h文件:
在您的视图控制器类为您的NSObject类的属性
@属性(非原子,保留)LoginCheckNSObject * LoginCheckerObject;
在M档:
self.LoginCheckerObject=[[LoginCheckNSObject alloc] init];
[self.LoginCheckerObject setDelegate:self];
[self.LoginCheckerObject TrackNowLogin];
@ Jack Humphries改进,将其添加到您的视图控制器类中。而已 – SathishKumarEro 2014-10-29 15:12:47
不要覆盖'+(无效)initialize' !!!! '+ initialize'与'-init'有很大不同**!你需要确保你正确地调用'super'。此外,请确保您遵循MVC指南。通常,模型对象不应显示UI元素。 – 2012-03-31 16:06:02
杰克劳伦斯是正确的:谁是自我,它是一个UIAlertView代表?它甚至没有被初始化,这就是它不作为委托被调用的方式。 – 2012-03-31 16:08:59
你们是对的!我之前没有这样做过,因此我将+(void)初始化为 - (id)init并将其工作。杰克劳伦斯:写你的评论作为答案,所以我可以标记你的权利。 – 2012-03-31 16:10:07