2016-04-14 2 views
0

Поэтому у меня есть два UIButton's, оба подключены к классу LikeShape.swift enter image description hereИзменить UIButton класс во время выполнения

У меня есть еще один класс с именем LikeShapeDone.swift, что я хочу, чтобы установить во время выполнения, как это:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
    { 
     let imageCell = collectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as! PostsCollectionViewCell 

     if (likedBy[indexPath.row].containsObject((PFUser.currentUser()?.username)!)){ 
       // Post is liked by the current user 
       imageCell.likeButton = LikeShape() 
       imageCell.dislikeButton = LikeShapeDone() 
      } 
      if (dislikedBy[indexPath.row].containsObject((PFUser.currentUser()?.username)!)){ 
       // Post is disliked by the current user 
       imageCell.dislikeButton = LikeShapeDone() 
       imageCell.likeButton = LikeShape() 
      } 
      else{ 
       // Post is not liked by the current user 
      } 
     // <---- End ImageCell Row ----> 
     return imageCell 
    } 

Но ничего не происходит .. Я на 100% уверен, что текущий пользователь находится в likedBy и dislikedBy. Класс LikeShape имеет черную кнопку, а LikeShapeDone имеет красную кнопку, но кнопки только черные все время ... Любые предложения?

+0

Предложение: Создать одну кнопку и изменить тип во время выполнения не весь класс или целая кнопка. –

+0

@AshishKakkad Вы имеете в виду: 'imageCell.likeButton = LikeShape()'? Это то, что я пробовал, и не работал. –

+0

создать одну кнопку LikeDislikeButton.type = нравится или не нравится. изменение во время выполнения –

ответ

2

Как было рекомендовано в моем комментарии, я бы создал 1 класс для вашей кнопки, где вы можете установить тип кнопки непосредственно во время выполнения. Например:

public class LikeButton: UIButton { 

    public func setLike(type: String) { 

    switch(type) { 

    case "blue": 
     self.setBackgroundColor(UIColor.blueColor(), forState: .Normal) 
    break; 

    case "red": 
     self.setBackgroundColor(UIColor.redColor(), forState: .Normal) 
     break; 

    case "black": 
     self.setBackgroundColor(UIColor.blackColor(), forState: .Normal) 
     break; 

    case "white": 
     self.setBackgroundColor(UIColor.whiteColor(), forState: .Normal) 
     break; 

    default: 
    break 
    } 
} 

Редактировать снова: это имеет смысл только в том случае, если вам действительно необходимо расширить текущий UIButton. Это имеет смысл, когда у вас есть несколько параметров, и вы не хотите каждый раз устанавливать их в свой класс UIButton.

Вы могли бы (конечно) Комплект:

myButton.setBackgroundColor(UIColor.redColor(), forState: .Normal) //Any Color 

Использование кодового Top:

myLikeButton = LikeButton(frame: CGRectMake(0,0,200,50)) 
myLikeButton.setLike("blue") 

или (во время выполнения)

myLikeButton.setLike("red") 
+0

Можете ли вы добавить пример кода, в котором вы определяете 4 разных типа? Изменить цвет: черный, белый, красный и синий? –

+0

Создать класс быстрого класса или класса Cocoa? –

+0

Донные вещи. В классах CocoaTouch есть только кодовая таблица кода – derdida

Смежные вопросы