Должен ли я использовать глобальную логическую переменную в этом случае? - PullRequest
1 голос
/ 13 февраля 2012

У меня есть viewcontroller (скажем, A). Я помещаю некоторые контроллеры представления по первому контроллеру представления (A). После некоторых задач я переключаюсь на свой первый контроллер вида (A). То есть я попадаю в rootviewcontroller (A). Но на этот раз у моего viewcontroller (A) должно быть предупреждение.

Мой вопрос: правильно ли в этом случае установить глобальную логическую переменную. Я имею в виду, я объявляю глобальную логическую переменную, которая устанавливает значение true, только когда контроллеры представления выскочили. Есть ли лучший способ, которым я мог бы сделать это.

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Конечно, вы можете использовать Global NSString (или BOOL) для отображения AlertView, когда дело доходит до ViewController
В приведенном ниже коде я использовал строковую переменную.
Объявите переменную NSString в классе AppDelegate.h

NSString * checkAlert;
//make property of that NSString.
@property(retain,nonatomic)NSString * checkAlert;

В AppDelegate.m

//synthesize checkAlert
@synthesize checkAlert;

checkAlert=@"NotNeed";

затем в ViewController

-(void)ViewWillAppear{
// here check if checkAlert contains string as you want
if(checkAlert isEqualToString:@"showAlert"){
 //here show the AlertView
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"AlerViewmessage" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

    [alert show];
    [alert release];
}
}

//when you abou to navigate to another ViewController the Access that checkAlert String    as
-(void)goToAnotheViewController{
AppDelegate* appdele=(AppDelegate*)[[UIApplication sharedApplication]delegate];
appdele.checkString=@"showAlert";

//then navigate to viewController
[self.navigationController pushViewController: animated:YES];
}

//you just need to compare checkString's value string . 

Это будет работать

0 голосов
/ 13 февраля 2012

Вы также можете установить свой первый контроллер представления в качестве глобальной переменной , например, в своем AppDelegate, затем вы можете получить к нему доступ через

(YourAppDelegate*)[UIApplication sharedApplication].firstViewController

, а затемпосле возврата к нему вызовите функцию DisplayAlert.

Или вы можете передать первый контроллер вида всем впоследствии выдвинутым контроллерам вида как «главный контроллер вида», а затем вызвать функцию безнужна глобальная переменная.

Или вы можете получить доступ к контроллеру корневого представления , вызвав

[self.navigationController.viewControllers objectAtIndex:0]

, а затем вызвать функцию оповещенияэто.

0 голосов
/ 13 февраля 2012

Вы также можете сохранить его в NSUserDefaults.В ViewController:

NSUserDefaults *prefs = [NSUserDefaults  standardUserDefaults];
[prefs setBool:YES forKey:@"some_key"];

в другом ViewController в viewWillAppear, например:

NSUserDefaults *prefs = [NSUserDefaults  standardUserDefaults];
BOOL val = [prefs boolForKey:@"some_key"];
...