2010-04-10 93 views
1

我一直沒有在iPhone上編程很長時間,但我通過Google搜索問題緩慢地撿起它。不幸的是,我一直無法找到這些答案。我與UIButton和UIView有兩個問題

我已經在Xcode 3.2.2中啓動了一個新的基於視圖的應用程序,並立即添加了以下文件:myUIView.m和myUIView.h,它們是UIView的子類。在Interface Builder中,我將默認UIView的子類設置爲myUIView。

我在drawRect方法中做了一個按鈕。

問題一:按鈕的標題只出現後,我點擊屏幕,爲什麼?

問題二:我想讓按鈕產生模態視圖 - 這可能嗎?

的代碼如下:

#import "myUIView.h" 
@implementation myUIView 
- (void)drawRect:(CGRect)rect { 
// Drawing code 
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.frame = CGRectMake(0,0,100,100); 
    [button setTitle:@"butty" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:button]; 
} 

-(void)buttonPressed:(id)sender{ 
    NSLog(@"Button pressed"); 
    //present modal view somehow..? 
} 

我看不出如何上傳附件,但如果有人認爲這將有助於我可以上傳源。

非常感謝, 安迪

回答

1

drawRect:是自定義繪製。你不會經常需要這樣做。您的按鈕在發送之前不會被繪製drawRect:,可能在運行循環的下一次迭代中(即,當您單擊視圖時)。

如果您想在視圖上使用按鈕,請使用IB拖動它,或將代碼從drawRect:移動到viewDidLoad

[self presentModalViewController:viewController animated:YES]; 

爲此在您的按鈕發送到您的視圖控制器的操作方法:

您可以通過提出從視圖控制器模式的看法。這應該表明你需要看看你的應用程序設計。

+0

好的,這是一個好方法。它似乎繪製的按鈕和背景顏色,只是不是標題或背景圖像... 我的第二個問題的任何想法? 謝謝,A – Andy 2010-04-10 18:47:33

+0

編輯回答... – 2010-04-10 18:57:39

+0

看來,viewDidLoad不是UIView的一個子類響應的方法。我把這個按鈕放在awakeFromNib中。我的代碼現在看起來像這樣: - (void)buttonPressed:(id)sender { \t newNib * myModalVC = [[newNib alloc] init]; \t [self presentModalViewController:myModalVC animated:YES]; } 然而,這並不爲工作「‘myUIView’不能爲‘-presentModalViewController:動畫:’迴應」 ...... 該項目需要進行動態生成的按鈕,所以我想他們必須作出在UIView子類,但我不能調用模態視圖,因爲這需要一個UIViewController .. *卡住: - ?* – Andy 2010-04-10 21:01:00