Iphone 如何将UIView作为子视图添加到视图中(用于提供用户反馈)

Iphone 如何将UIView作为子视图添加到视图中(用于提供用户反馈),iphone,ios,Iphone,Ios,我正在创建rate-a-fish应用程序。当用户给鱼评分时,我想显示一个小框,上面写着“平均评分:*”,上面有星星 我在表格的单元格中实现了类似的功能,但似乎无法使其在正常视图中工作(我运行以下代码,但视图中没有显示任何内容): -(无效)显示平均值:(NSInteger)平均值{ UILabel*text=[[UILabel alloc]initWithFrame:CGRectMake(10,10,90,20)]; text.text=@“平均评级:”; UIView*wrapper=[[UI

我正在创建rate-a-fish应用程序。当用户给鱼评分时,我想显示一个小框,上面写着“平均评分:*”,上面有星星

我在表格的单元格中实现了类似的功能,但似乎无法使其在正常视图中工作(我运行以下代码,但视图中没有显示任何内容):

-(无效)显示平均值:(NSInteger)平均值{
UILabel*text=[[UILabel alloc]initWithFrame:CGRectMake(10,10,90,20)];
text.text=@“平均评级:”;
UIView*wrapper=[[UIView alloc]initWithFrame:CGRectMake(10020010030)];
wrapper.layer.cornerRadius=8;
wrapper.backgroundColor=[UIColor whiteColor];
[包装器添加子视图:文本];
[文本发布];
UIImageView*星星;
NSInteger ratingI=平均值;

对于(int i=0;i这不是你问题的答案,但我认为最好添加3秒钟内启动的计时器,然后删除窗口;你不会以这种方式阻止线程;你是否尝试过一开始只添加简单的子视图,即没有其他代码的包装器?它会出现吗?或者实际上,当我重新思考问题时,它可能是回答您的问题-以这种方式阻止线程可能是窗口无法显示的原因。到目前为止,我知道在线程返回到运行循环后,UI将被更新。

我尝试了这段代码。问题在于以下行

 [NSThread sleepForTimeInterval:3];
因此,您可以编写一个新方法,并使用“wrapper”作为参数调用它,以删除wrapper视图,而不是这一行

[self performSelector:@selector(removeWrapper:) withObject:wrapper afterDelay:3];
实施该方法

-(void)removeWrapper:(id)sender
{
    UIView *wrapper = sender;
    [wrapper removeFromSuperview];
    [wrapper release];
}

在我看来还不错。发生了什么事?您是否尝试过使用调试器单步执行代码?我认为问题出在这里:[self.view addSubview:wrapper];[self.view bringsubview tofront:wrapper];检查您的视图是否在窗口上;(检查rootViewController的委托)[NSThread sleepForTimeInterval:3];阻止当前线程以便添加视图,但阻止线程阻止其绘制。3秒钟后,视图立即被删除。了解NSObject类方法,因为您经常需要它们。@TheBlack您是对的。感谢所有人的帮助是的,您是对的,但为Arun付出额外的努力编写代码给出了正确的答案。谢谢
-(void)removeWrapper:(id)sender
{
    UIView *wrapper = sender;
    [wrapper removeFromSuperview];
    [wrapper release];
}