Создать представление рейтинга в цели IOS c

Я хочу создать следующие рейтинговые представления, показанные ниже. Как это сделать введите здесь описание изображения

У меня есть 3 условия. У меня есть метка сверху и снизу со звездами, а в конце есть TextField. «Хороший», «Удивительный», «Ужасный» выставляется в соответствии с количеством звезд. Когда есть 1 звезда, то есть ужасное состояние, мы должны представить четыре кнопки: проблемы с заказом, время, дружелюбие, чистота. И UITextField смещается под нее.

Я реализовал следующий код

#pragma mark -  Btn Action on start click

  - (IBAction)Btn_FirstHorrific:(id)sender {
       [self ReviewHorrific];
       [self NumOfStarWorstCase];

      str_deliveryBoyRating=@"1";
      str_customerComment=@"Horrific";
     }

- (IBAction)Btn_SecondNah:(id)sender {
       [self ReviewSecondNah];
       [self NumOfStarOthercase];

    str_deliveryBoyRating=@"2";
    str_customerComment=@"nah!";
     }

- (IBAction)Btn_ThirdItsOk:(id)sender {
    [self ReviewItsOk];
    [self NumOfStarOthercase];

    str_deliveryBoyRating=@"3";
    str_customerComment=@"Its ok";
    }

- (IBAction)Btn_FourthGood:(id)sender {
    [self ReviewGood];
    [self NumOfStarOthercase];

    str_deliveryBoyRating=@"4";
    str_customerComment=@"good";

    }

- (IBAction)Btn_FifthAmazing:(id)sender {
    [self ReviewAmazing];
    [self NumOfStarOthercase];

    str_deliveryBoyRating=@"5";
    str_customerComment=@"Amazing";


     }



#pragma mark - Change star colour in Number of star changes

- (void)ReviewHorrific{
    Btn_FirstHorrific.tintColor = UIColorFromRGB(0xff8133);


    Btn_SecondNah.tintColor = [UIColor whiteColor];
    Btn_ThirdItsOk.tintColor = [UIColor whiteColor];
    Btn_FourthGood.tintColor = [UIColor whiteColor];
    Btn_FifthAmazing.tintColor = [UIColor whiteColor];


    lbl_report.text=@"Please report your issue";
    lbl_RateType.text=@"Horrific";

    self.View_WorstCase.hidden = FALSE;


    }


- (void)ReviewSecondNah{

    Btn_FirstHorrific.tintColor = UIColorFromRGB(0xff8133);
    Btn_SecondNah.tintColor = UIColorFromRGB(0xff8133);

    Btn_ThirdItsOk.tintColor = [UIColor whiteColor];
    Btn_FourthGood.tintColor = [UIColor whiteColor];
    Btn_FifthAmazing.tintColor = [UIColor whiteColor];

    lbl_report.text=@"Please report your issue";
    lbl_RateType.text=@"Nah!!";

  }

- (void)ReviewItsOk{

    Btn_FirstHorrific.tintColor = UIColorFromRGB(0xff8133);
    Btn_SecondNah.tintColor = UIColorFromRGB(0xff8133);
    Btn_ThirdItsOk.tintColor = UIColorFromRGB(0xff8133);

    Btn_FourthGood.tintColor = [UIColor whiteColor];
    Btn_FifthAmazing.tintColor = [UIColor whiteColor];

    lbl_report.text=@"Please report your issue";
    lbl_RateType.text=@"It's OK";

}

- (void)ReviewGood{

    Btn_FirstHorrific.tintColor = UIColorFromRGB(0xff8133);
    Btn_SecondNah.tintColor = UIColorFromRGB(0xff8133);
    Btn_ThirdItsOk.tintColor = UIColorFromRGB(0xff8133);
    Btn_FourthGood.tintColor = UIColorFromRGB(0xff8133);

    Btn_FifthAmazing.tintColor = [UIColor whiteColor];

    lbl_report.text=@"Heap praise if you would like";
    lbl_RateType.text=@"Good";

}

- (void)ReviewAmazing{

    Btn_FirstHorrific.tintColor = UIColorFromRGB(0xff8133);
    Btn_SecondNah.tintColor = UIColorFromRGB(0xff8133);
    Btn_ThirdItsOk.tintColor = UIColorFromRGB(0xff8133);
    Btn_FourthGood.tintColor = UIColorFromRGB(0xff8133);
    Btn_FifthAmazing.tintColor = UIColorFromRGB(0xff8133);

    lbl_report.text=@"Glad to hear it. Any comments or feedback?";
    lbl_RateType.text=@"Amazing";

}

person Nischal Hada    schedule 05.05.2015    source источник
comment
вы можете создать пять кнопок... пожалуйста, сделайте изображение звезды на этом... для целей дизайна   -  person Ashok Londhe    schedule 05.05.2015
comment
Я реализовал это, но я знаю, что мой путь не лучший. и у меня есть 3 разных условия так   -  person Nischal Hada    schedule 05.05.2015
comment
попробуйте это, github.com/dlinsin/DLStarRating/blob/master/DLStarRating.png , он предоставляет метод изменения значения для вашего состояния.   -  person Viral Savaj    schedule 05.05.2015
comment
Вы можете добавить два разных изображения .... 1) когда оно находится в нормальном состоянии, вы можете разместить невыбранные изображения звезды 2) и когда оно выбрано, вы можете порадовать желтым выбранным изображением звезды. и скажите мне ваши условия, чтобы я мог вам помочь ..   -  person Ashok Londhe    schedule 05.05.2015
comment
@nischalhada Ваша проблема решена или нет...   -  person Ashok Londhe    schedule 05.05.2015


Ответы (1)


Шаг 1)

Добавьте 5 UIButton в свой файл пользовательского интерфейса. Затем в коде заголовка (.h) объявите UIButton следующим образом:

IBOutlet UIButton *starOne;
IBOutlet UIButton *starTwo;
IBOutlet UIButton *starThree;
IBOutlet UIButton *starFour;
IBOutlet UIButton *starFive;

Затем вернитесь в файл пользовательского интерфейса и свяжите представления звездочек с вашим кодом. Затем добавьте изображения звезд по умолчанию (не выбранные) к вашим кнопкам (для этого просто перетащите их).

Шаг 2)

Вернувшись в код заголовка, добавьте 5 методов IBAction. Они обнаружат, когда нажаты кнопки со звездочкой:

-(IBAction)press_1;
-(IBAction)press_2;
-(IBAction)press_3;
-(IBAction)press_4;
-(IBAction)press_5;

Затем добавьте метод. Этот метод будет обрабатывать изображения звезд.

-(void)set_stars:(int)num :(NSString *)desc

Затем объявите целое число в файле заголовка. Это скажет вам, что такое рейтинг, например:

int rating;

Также объявите массив (он будет содержать указатели на ваши звездочки):

NSArray *_starButtons;

Наконец, объявите UILabel, чтобы показать название для каждого рейтинга (и понравиться вашему пользовательскому интерфейсу), например:

IBOutlet UILabel *rating_name;

Шаг 3)

В коде реализации (.m) добавьте следующее:

-(IBAction)press_1 {
    [self set_stars:1 :@"Horrific"];
}

-(IBAction)press_2 {
    [self set_stars:2 :@"nah!"];
}

-(IBAction)press_3 {
    [self set_stars:3 :@"Its ok"];
}

-(IBAction)press_4 {
    [self set_stars:4 :@"good"];
}

-(IBAction)press_5 {
    [self set_stars:5 :@"Amazing"];
}

 -(void)set_stars:(int)num :(NSString *)desc {

    rating_name.text = [NSString stringWithFormat:@"%@", desc];

    for (int loop = 0; loop < 5; loop++) {

        if ((loop + 1) <= num) {
            [((UIButton*)_starButtons[loop]) setBackgroundImage:[UIImage imageNamed:@"star_ON.png"] forState:UIControlStateNormal];
        }

        else {
            [((UIButton*)_starButtons[loop]) setBackgroundImage:[UIImage imageNamed:@"star_OFF.png"] forState:UIControlStateNormal];
        }
    }

    rating = num;
 }

Наконец, не забудьте заполнить массив кнопками в методе viewDidLoad следующим образом:

_starButtons = @[starOne, starTwo, starThree, starFour, starFive];
person Community    schedule 05.05.2015
comment
Я реализовал аналогичный тип действия, но это длинные и утомительные методы, поэтому я хочу его изменить. Я хочу делать все внутри одного действия, а не нескольких. может ты мне поможешь - person Nischal Hada; 05.05.2015
comment
@nischalhada Да, я просто работаю над лучшей версией для цикла. Я обновлю свой ответ через мин. - person ; 05.05.2015
comment
Хорошо, я буду ждать этого - person Nischal Hada; 05.05.2015
comment
Ок попробую реализовать и проверить - person Nischal Hada; 05.05.2015
comment
можете ли вы помочь мне с этой проблемой " title="как включить в поле uitext только один текстовый номер"> stackoverflow.com/questions/29796503/ - person Nischal Hada; 05.05.2015
comment
@nischalhada Я обновил свой ответ, включив в него рейтинг :) - person ; 05.05.2015
comment
У меня есть некоторое замешательство, я попытаюсь реализовать это на следующий день и упомяну об этом вам. - person Nischal Hada; 05.05.2015
comment
@nischalhada спасибо за галочку. Я так понимаю, мое решение сработало для вас в конце концов или, по крайней мере, сработало для вас более или менее? - person ; 06.05.2015
comment
@nischalhada Я думал, что на этот вопрос уже ответили? - person ; 06.05.2015
comment
Я не могу публиковать вопросы из-за отрицательной отметки, можете ли вы помочь мне удалить отрицательную оценку - person Nischal Hada; 12.05.2015
comment
@nischalhada У вас 212 репутации, вы должны иметь возможность задавать вопросы? - person ; 12.05.2015
comment
У меня мало голосов за вопросы, кратные нулю и -ve, так что у меня проблема - person Nischal Hada; 12.05.2015
comment
@nischalhada Я проголосовал за некоторые ваши материалы и отредактировал один из ваших ответов. Это должно помочь решить проблему. Убедитесь, что вы одобряете мое редактирование для дополнительных +5 репутации. Это должно позволить вам снова публиковать вопросы. - person ; 12.05.2015
comment
Спасибо, чувак.. Я тебе тоже кое-чем помогу - person Nischal Hada; 12.05.2015
comment
У тебя есть этот чувак? - person Nischal Hada; 12.05.2015