无法通过多个视图访问appdelegate中的值

时间:2011-12-15 02:05:01

标签: iphone ios ipad uiviewcontroller uiapplicationdelegate

我正在尝试访问我在AppDelegate中作为属性创建的int和float,这些视图是作为应用程序视图控制器的子视图创建的(我知道这是禁止的,我应该使用MVC范例但这是用于上课,我们没有报道这个学期)。我可以设置每个视图中的值,然后在同一视图中获取它们,但是当我想将所有值聚合到一个视图中时,我无法访问任何内容。在每个视图的viewWillDisappear方法中我都有:

Final2AppDelegate* delegate = (Final2AppDelegate *)[[UIApplication sharedApplication]delegate];

接下来是我要设置的值: ... delegate.oldTotal = olds; ...

然后在聚合所有值的视图上,我有标签,其文本应该设置为delegate中存储的值,但我得到的都是0。我不确定这些观点是否正在调用willAppearwillDisappear方法,因为它们被控制为:

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

我花了几天时间才试图让它发挥作用并且没有任何表现。有人能在这里说清楚吗?


我用来访问它的AppDelegate代码和代码


我有我一直试图使用的整数和浮点数:

int eggTotal;@property(nonatomic,assign)int eggTotal;

然后它们在实现文件中都是synthesized。我一直在分配这样的值:

Final2AppDelegate* delegate = (Final2AppDelegate *)[[UIApplication sharedApplication]delegate];
delegate.oldTotal = olds;

我一直试图像这样访问它们:

eggFinalQty.text = [NSString stringWithFormat:@"%d",delegate.eggTotal];

1 个答案:

答案 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];
    }
}