2011-10-07 79 views
0

我無法連接代碼和.xib文件之間的點。Objective-C:以編程方式從另一個類中添加UIButton

如果我想以編程方式將一系列UIButtons添加到我的視圖控制器,我將如何從一個單獨的類執行此操作?

例如,如果我有MainViewController.m,它被設置爲Xcode中的根視圖控制器,我怎樣才能將UIButtonSecondViewController.m添加到該視圖控制器?這甚至有可能嗎?

我基本上想把我所有的「用戶界面」代碼放在一個單獨的類中。

感謝

+0

爲什麼?你在XIB,控制器和希望有一個單獨的模型中有你的看法。爲什麼控制器和視圖互相捅戳? – bryanmac

回答

0

要做到這一點,創建一個UIButton *myButton編程,然後調用[mainViewController addSubview:myButton];。這可能意味着您需要在SecondViewController類中存儲MainViewController *資產。

UIButton例如重要的方法和屬性(基本上,只是看看的文件,但這裏有一組最小的東西,讓你開始):

  • +[UIButton buttonWithType:buttonType] - 如果你確保」重新遠程執行任何自定義在這裏使用UIButtonTypeCustom(它不給你任何默認背景圖片或以其他方式必須nil出)

  • setFrame: - 相對於其容器的按鈕,可用性的位置,並設置大小原因widthheight應至少爲44像素(如here所述)。

  • setTitle:forState: - UIControlStateNormal將作爲對其他國家的默認屬性,所以你可能只需要在此處設置的文本

  • setBackgroundImage:forState: - 使用UIControlStateNormalUIControlStateHighlighted/UIControlStateSelected爲主,UIControlStateDisabled如果你想展示它隨時變灰或無法訪問。

  • setImage:forState: - 使用一個圖標旁邊的按鈕上的文字(如指向下方的保存箭頭或向上的負載等)

  • setEnabled:setHidden:setSelected: - 不同的按鈕狀態之間的轉換。當你點擊按鈕時,setHighlighted:會自動發生。

  • addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside - TouchUpInside幾乎總是你想要的一個簡單的按鈕按下,我在這裏使用一個名爲buttonClicked:的方法來處理我的按鈕按下。

哦,如果你使用[[UIButton alloc] initWith...]一旦它加入到mainViewController :)

0

使用本

#import "MainViewController.h" 

@interface SecondViewController 
{ 
    MainViewController *mainView; 
} 

@property(nonatomic, retain) MainViewController *mainView; 

-(void)addButtons; 

在您的實現別忘了[myButton release]

@synthesize mainView; 

-(void)addButtons 
{ 
    UIButton *add = [UIButton alloc] init]; 
//do necessary stuff on button here 
[self.mainView addSubview:add]; 
[add release]; 
} 

在您的MainViewcontroller.m中

#import "SecondViewController.h" 

-(void)viewDidLoad 
{ 
[self superViewDidLoad]; 
SecondViewController *second = [SecondViewController alloc] init]; 
second.mainView = self; 
[second addButton]; 
[second release]; 
} 
相關問題