2016-10-01 70 views
0

我在故事板中有這個設計,它是我同時堆疊的所有按鈕。但是當我嘗試將它連接到代碼時,我感到很困難,似乎這樣反覆。在UIView中添加大量按鈕

enter image description here

我一直在使用常規的拖放和拖放來連接所有的按鈕嘗試過,但似乎這麼長時間和反覆。 有沒有最佳實踐來連接並使一個聽衆可以聽到所有的按鈕?使用for-loop可能是。

+0

你可以寫在迅速?求求你了,謝謝你。 – chronycles

+0

您在此圖片中顯示的佈局看起來像集合視圖將成爲需求的最佳套件,您可以使用UICollectionView –

回答

1

而你可以將它們連接到故事板。

Objective-C的

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray * buttons; 

雨燕2.2

@IBOutlet var collectionOfButtons = [UIButton]() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    collectionOfButtons.forEach { 
     $0.addTarget(self, action: #selector(someFunc(_:)), forControlEvents: .TouchUpInside) 
    } 
} 

或者更簡單的方法:

override func viewDidLoad() { 
    super.viewDidLoad() 
    for view in view.subviews { 
     (view as? UIButton)?.addTarget(self, action: #selector(someFunc(_:)), forControlEvents: .TouchUpInside) 
    } 
} 
func someFunc(sender: UIButton?) {} 

雨燕3.0

override func viewDidLoad() { 
    super.viewDidLoad() 
    view.subviews.forEach { 
     ($0 as? UIButton)?.addTarget(self, action: #selector(someFunc(_:)), for: .touchUpInside) 
    } 
} 
func someFunc(_ sender: UIButton?) {} 
+0

以及如何添加操作?哪裏?如何?謝謝Dmytro – chronycles

+0

@chronycles在故事板中創建所有這些按鈕真的很痛苦 –

+0

準確!這就是爲什麼我很困惑。我使用swift 3並使用按鈕而不是UiView,我是否也必須將代碼編寫爲代碼?使用view.subviews.forEach?或者我必須寫這樣的seat.forEach {(座位)在 seat.addTarget(self,action:#selector(handleButton),forControlEvents:.TouchUpInside) } – chronycles

0

你可以使用開關代替循環在這裏我們去:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button = (Button)findViewById(R.id.btn1); 
    Button button2 = (Button)findViewById(R.id.btn2); 
    .. 
    ....Another buttons 
    ..... 

    button.setOnClickListener(onClickButtons); 
    button2.setOnClickListener(onClickButtons); 

} 

View.OnClickListener onClickButtons = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.btn1: // do smth 
       break; 
      case R.id.bt2: //do another thing 
       break; 
      .. 
      ... 
      .... 
      default : 
       break; 
     } 
    } 
}; 
+1

嗨Sardor,這是Java代碼?但我用swift代碼問它。呵呵。 – chronycles

+0

對不起兄弟,那一刻我認爲它是Java中的Android。 –