2015-06-26 2 views
1

Все. В моем приложении для iOS. На многих страницах я с Too many alerts and also with many Network conditions.Уменьшить код просмотра предупреждения

С слишком много текстов предупреждений я надоела. И каждый раз я должен поставить тот же код.

Могу ли я объявить этот код в некотором классе помощника? Или повторное использование этого кода?

-(BOOL)checkInternetAndlocationServices { 

    if(IS_INTERNET) { 
     if([CLLocationManager locationServicesEnabled] && 
      [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied){ 
      return YES; 
     } 
     else 
     { 
      NSLog(@"Location services are disabled."); 
      UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Location services are off." message:@"This app requires an Location services." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Location Services", nil]; 
      [alert setTag:NO_LOCATIONSERVICES]; 
      [alert show]; 
      return NO; 
     } 
    } 
    else 
    { 
     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Internet connection is off." message:@"This app requires an internet connection and locations services, please enable internet connection and location services." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Settings", nil]; 
     [alert setTag:NO_INTERNET]; 
     [alert show]; 
     return NO; 
    } 
} 

Спасибо. Пожалуйста, отредактируйте этот вопрос, если вы сочтете это полезным.

Спасибо за хороший подход, но любые другие способы, примеры приветствуются.

+1

Создайте пользовательский подкласс 'UIAletView'. –

+0

Я, вот что я тоже думаю. Я слышал/видел об общем объекте, как люди используют его как AppDelegate и CoreDataController в качестве общего объекта. Могу ли я использовать его таким образом. –

+0

Между тем я делаю это как подкласс и создаю метод разных типов для различных типов предупреждений. –

ответ

2

Вы можете сделать класс NSObject и написать метод ли экземпляра или метода класса, как это и передать только сообщение и делегат ли необходимо установить ноль или себя, как это: -

+(void)showAlertViewWithAlertMessage:(NSString*)alertMessage withDelegate:(id)delegate 
    { 
     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Title" message:alertMessage delegate:delegate cancelButtonTitle:OK_TAP otherButtonTitles: nil]; 
     [alert show]; 
    } 

You может использовать его следующим образом: - [Имя класса showAlertViewWithAlertMessage: @ "ваше сообщение" withDelegate: nil];

+0

Собственно, сообщения оповещения будут только в этом методе, считая, что для сетевых оповещений я вызову один метод, для других типов я вызову разные методы, Не хочу передавать сообщения. Потому что он выглядит так грязно. –

+1

Таким образом, вы можете использовать его как этот тип: - + (void) showAlertViewWithAlertMessage { UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Название" сообщение: @ "Network Alert" delegate: nil cancelButtonTitle: @ "OK "otherButtonTitles: nil]; [alert show]; } [Имя класса showAlertViewWithAlertMessage] – ashForIos

+0

Это хорошо, я могу удалить сообщение отсюда и поместить его в класс, я думаю, это будет хорошо. –

5
  1. Вы можете создать класс-помощник и использовать методы класса для отображения предупреждения.
  2. Вы также можете создать категорию UIAlertView и создать метод класса для отображения предупреждения. (Edit)
     
    @implementation UIAlertView (MyAlert) 
    +(void) showAlertWithTitle:(NSString *)title message:(NSString *)message { 
    [[[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; 
    } 
    @end 
    
  3. Вы можете определить макрос в файле .pch или в каком-либо вспомогательном файле заголовка для отображения предупреждения.
    #define Alert(title,msg,target) [[[UIAlertView alloc] initWithTitle:title message:msg delegate:target cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show] 
    Alert(@"This is Title",@"This is message",self);
+0

Пожалуйста, дайте мне пример, для этого предупреждения, как t make .. –

+0

Вы имели в виду вспомогательный класс, как ashForIos, упомянутый в его ответе ?? ниже –

+0

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

Смежные вопросы