Проблемы с доступом к значениям из appdelegate с несколькими представлениями - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь получить доступ к int и float, которые я создал как свойства в AppDelegate, из представлений, которые создаются как подпредставления контроллера представления приложений (я знаю, что это нет-нет, и я должен использовать парадигму 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];
    }
}

Я провел дни, пытаясь заставить это работать, и мне нечего показать. Кто-нибудь может пролить немного света здесь?


Код 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 голосов
/ 15 декабря 2011

Я не думаю, что -(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];
    }
}
...