我正在尝试访问我在AppDelegate中作为属性创建的int和float,这些视图是作为应用程序视图控制器的子视图创建的(我知道这是禁止的,我应该使用MVC范例但这是用于上课,我们没有报道这个学期)。我可以设置每个视图中的值,然后在同一视图中获取它们,但是当我想将所有值聚合到一个视图中时,我无法访问任何内容。在每个视图的viewWillDisappear
方法中我都有:
Final2AppDelegate* delegate = (Final2AppDelegate *)[[UIApplication sharedApplication]delegate];
接下来是我要设置的值:
...
delegate.oldTotal = olds;
...
然后在聚合所有值的视图上,我有标签,其文本应该设置为delegate
中存储的值,但我得到的都是0。我不确定这些观点是否正在调用willAppear
和willDisappear
方法,因为它们被控制为:
-(IBAction)loadBeverageView:(id)sender{
[self clearView];
[self.view insertSubview:beverageViewController.view atIndex:0];
}
和
-(void)clearView{
if(beverageViewController.view.superview){
[beverageViewController.view removeFromSuperview];
}else if(appetizerViewController.view.superview){
[appetizerViewController.view removeFromSuperview];
}else if(entreeViewController.view.superview){
[entreeViewController.view removeFromSuperview];
}else if(sideViewController.view.superview){
[sideViewController.view removeFromSuperview];
}else if(dessertViewController.view.superview){
[dessertViewController.view removeFromSuperview];
}else{
[billViewController.view removeFromSuperview];
}
}
我花了几天时间才试图让它发挥作用并且没有任何表现。有人能在这里说清楚吗?
我有我一直试图使用的整数和浮点数:
int eggTotal;
和
@property(nonatomic,assign)int eggTotal;
然后它们在实现文件中都是synthesized
。我一直在分配这样的值:
Final2AppDelegate* delegate = (Final2AppDelegate *)[[UIApplication sharedApplication]delegate];
delegate.oldTotal = olds;
我一直试图像这样访问它们:
eggFinalQty.text = [NSString stringWithFormat:@"%d",delegate.eggTotal];
答案 0 :(得分:0)
我认为-(void) clearView
不需要那么复杂。如果您只想删除之前设置的视图,请尝试以下操作:
-(void) clearView {
if ([[self.view subviews] count] > 0) {
[[[self.view subviews] objectAtIndex:0] removeFromSuperview];
}
}
注意我刚输入,请注意拼写错误。
如果self.view
仅包含您要添加的视图,这也会变得更加简单。您可以这样做,而不是使用索引0:
-(IBAction)loadBeverageView:(id)sender{
[self clearView];
[self.view addSubview:beverageViewController.view];
}
和....
-(void) clearView {
if ([[self.view subviews] count] > 0) {
[[[self.view subviews] lastObject] removeFromSuperview];
}
}