ios - 在 IOS objective c 中创建评级 View

标签 ios objective-c uibutton rating

我想创建如下所示的评级 View 。怎么可能做到 enter image description here

我有 3 个条件。我在顶部和下方都有标签,标签是星号,最后是 TextField。 Good,Amazing,Horrific 是根据星数设置的。当有 1 颗星时,即可怕的情况,我们必须显示四个按钮订单问题、时间、友好性、清洁度。UITextField 在它下面移动

I have implemented following code

#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";

}

最佳答案

步骤 1)

将 5 个 UIButton 添加到您的 UI 文件。然后在您的 header (.h) 代码中,像这样声明 UIButton:

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

然后回到您的 UI 文件,将星形按钮 View 链接到您的代码。然后将默认(未选择)的星形图像添加到您的按钮(只需拖放即可)。

步骤 2)

回到您的 header 代码中,添加 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 来显示每个评级的名称(并将其添加到您的 UI 中),如下所示:

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];

关于ios - 在 IOS objective c 中创建评级 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046592/

相关文章:

objective-c - 基本的 Objective C 语法问题

ios - UIApplication 如何知道何时在应用程序中创建 UIWindow?

ios - 进度 View 翻转和缩放

ios - 如何验证从买家的Apple收据电子邮件收到的App Store订单ID?

objective-c - 尝试在 UIView 中绘制

ios - 本地化系统生成的隐私警报消息 iOS UIAlertView Xcode

ios - 编辑后 UITextField 检查为空

swift - 惰性按钮的目标操作不起作用

ios - 与 UITableView 外部的其他按钮相比,TableHeaderView 中的自定义 UIButton 响应速度不快

iphone - 无法设置 UIButton 的标题