我在我的應用程序中構建了一個登錄系統,該系統將被多次調用。因此,我不是將代碼複製粘貼到多個位置,而是製作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
。謝謝!
不要覆蓋'+(無效)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