2011-05-30 48 views
2

這可能是一個簡單的問題,但我發現自己卡住了。我試圖擴展UIView並從另一個控制器初始化它,但發現我的自定義UIView初始化方法沒有調用。我如何初始化我的自定義UIView?如何手動初始化自定義UIView

// BookView.h 
@interface BookView : UIView { 
} 

//BookView.m 
@implementation BookView 
- (void) initialize{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    [alert show]; 
    [alert release]; 
} 
@end 

//BookViewController.m 
-(void)viewDidLoad{ 
    BookView *bookView = [(BookView*)[BookView alloc] initWithTest:[[UIScreen mainScreen] bounds]]; 
} 
+0

嘗試[bookView initialize]; – visakh7 2011-05-30 06:04:53

回答

1

試試這個,

BookView *bookView =[[BookView alloc] init]; 
bookView.frame=self.view.frame; 
[self.view addSubView:bookView]; 
[bookView release]; 
+0

如果你不釋放'bookView',這會導致內存泄漏。 – fuzz 2011-05-30 05:56:44

+0

感謝您的回覆。但不工作。 – TonyTakeshi 2011-05-30 05:58:10

+0

更改你的 - (void)初始化爲 - (void)init然後它會工作 – Navaneethan 2011-05-30 06:00:27

0
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"BookView" owner:self options:nil]; 
self.yourBookView = [nibViews objectAtIndex:0]; 
+0

謝謝你的回覆,但我沒有使用任何nib文件。 – TonyTakeshi 2011-05-30 05:56:57

0
//BookView.m 
@implementation BookView 
- (void) init { // changed from (void)initialize {} 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    [alert show]; 
    [alert release]; 
} 

..和再申請@Navaneethan初始化您BookView的。