2013-01-24 168 views
0

我需要在我的應用程序中有很多自定義按鈕。此刻,我正在使用故事板在每個需要的控制器上定義這些按鈕。不過,我覺得既然我在整個應用程序中都需要它們,我最好放置一個不同的視圖控制器/視圖,它的子類爲UIViewUIViewController,所以如果我需要做任何更改,我只需要做一次,而不是在不同的視圖控制器。什麼是最好的方法來做到這一點?你也可以告訴我如何以編程方式創建按鈕?這就是我現在正在做的事情,而且我正在得到一個完全空白的屏幕。UIView/UIViewController子類

-(void)viewDidAppear:(BOOL)animated 
{ 
    UIButton *testButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [testButton setFrame:CGRectMake(0, 390, 100, 40)]; 
    [testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
    [setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateNormal]; 
    [setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateHighlighted]; 
    [setEnabled:YES]; 
    [self.view addSubview:testButton]; 
} 
+4

你的setImage和setEnabled行,是那些按鈕或視圖控制器?還有,你是否要離開[super viewDidAppear:animated];故意? –

+0

該代碼甚至不會編譯。你需要在setImage和setEnabled之前有testButton,那麼它應該可以工作(假設你實際上創建了這些圖像 - 否則,按鈕將不可見)。 – rdelmar

+0

Np,superview DidAppear:動畫就在那裏,我只是忘了粘貼它。 setImage和setEnabled用於按鈕。你是什​​麼意思通過前面的setImage和setEnabled的ahve testButton?不知道當你說圖像創作時你指的是什麼,我有圖像作爲支持文件。 –

回答

1

有一個機會,你的按鈕是遠離可見矩形。以編程方式添加按鈕,你大部分都是正確的。另外,圖像應該有文件擴展名。因爲你正在添加一個自定義按鈕,如果沒有圖像,那麼你不會看到任何按鈕。嘗試向您的按鈕添加標題,即使沒有添加圖像,也會顯示標題。

請嘗試下面的代碼。

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; //you must have a good reason to not add this line. 
    UIButton *testButton=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [testButton setFrame:CGRectMake(0, 20, 100, 40)]; 
    [testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
    [testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateNormal]; 
    [testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateHighlighted]; 
    [testButton setEnabled:YES]; 
    [self.view addSubview:testButton]; 
} 
+0

謝謝,這工作。現在,我有這個,我應該在母控制器文件中做什麼來繼承這個/以某種方式表現出這種行爲,因爲我希望跨越多個控制器的這個按鈕。 –

+0

我想你想要擁有同一個viewController的多個實例或從這個控制器繼承的viewController的實例。無論哪種情況,在每個派生/子/子類的viewDidAppear(如果你正在實現它),只需調用[super viewDidAppear:animated];該類的testButton將被添加。 –

+0

嗯,但我該如何創建這個控制器和其他人之間的關係。就像我寫superviewDidappear時一樣,它會如何知道我指的是這個特定的控制器? –