UI重新生成的问题
来源:6-1 UI课程总结
IDKWTS
2017-07-23 11:46:29
就是接着上次的那个问题 我这样重新生成UI但是当效果触发了之后 只是之前的UI被remove掉了而已 并没有重新生成
2回答
Tender10
2017-07-24
-(void)createAnswerButton:(IdiomModal *)modal{ //2.1在创建之前,吧答案区域的所有按钮都删掉 for (UIButton *btn in self.answerView.subviews) { //调用btn的 删除方法 [btn removeFromSuperview]; } //2.2创建按钮 for (int i=0; i<modal.answer.length; i++) { //创建按钮 UIButton *ansButton=[UIButton buttonWithType:UIButtonTypeCustom]; //计算Frame CGFloat ansbtnMarin=15;//按钮之间的间距 CGFloat ansbtnW = 44;//宽度 CGFloat ansbtnH = 44;//高度 CGFloat leftRightMargin=(self.view.frame.size.width-ansbtnW*modal.answer.length-ansbtnMarin*(modal.answer.length-1))/2; //计算X坐标 CGFloat ansbtnX =leftRightMargin+i*(ansbtnW+ansbtnMarin); CGFloat ansbtnY = 0; ansButton.frame=CGRectMake(ansbtnX, ansbtnY, ansbtnW, ansbtnH); //设置按钮的样式 两种状态设置 [ansButton setBackgroundImage:[UIImage imageNamed:@"btn_answer_highlighted"] forState:UIControlStateHighlighted]; [ansButton setBackgroundImage:[UIImage imageNamed:@"btn_answer"] forState:UIControlStateNormal]; //添加到答案区域的View中 [self.answerView addSubview:ansButton]; //为按钮绑定点击事件 [ansButton addTarget:self action:@selector(didClick:) forControlEvents:UIControlEventTouchUpInside]; //设置按钮的文字颜色 [ansButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; } }
建议在创建答案区域按钮的方法里,一开始就清除按钮,然后紧接着在执行下面for循环遍历创建按钮的方法。你之前在上一个问题中贴出了一个for循环创建视图的方法,在那个for循环创建之前,先清除一下。没有重新生成的还有一个原因就是获取下一题model的时候出现了问题。
Tender10
2017-07-23
代码的执行顺序应该是先清除,清除完紧接着执行加载按钮的代码。
相似问题