草庐IT

iphone - 当通信类中没有可用的 interetConnetion 时,ios 显示警报

coder 2024-01-26 原文

我有一个 ViewController (ViewController.m,它通过网络服务加载数据。 这些方法包含在 GetHTTP.m 中。

在 GetHTTP.m 中,我包含了 Reachable.h 以便在互联网连接中断时得到通知。

[[NSNotificationCenter defaultCenter] addObserver:self 
       selector:@selector(checkNetworkStatus:) 
       name:kReachabilityChangedNotification object:nil];

但是我如何从我的 GetHTTP::checkNetworkStatus 方法中发出警报,因为所有 View 都在我的 ViewController.m 类中?

可能我可以使用 ViewController 类中的一个方法作为我的选择器的目标,但是我从多个 ViewController 调用 GetHTTP,所以选择器目标每次从另一个 ViewClass 调用时都必须更改。

也许我错过了一个简单的 MVC 规则?

提前致谢。 基督徒

最佳答案

使用此代码发出警报消息

-(void) checkNetworkStatus:(NSNotification *)notice
{
    recheabilityBool=FALSE;
    nonrecheabilityBool=FALSE;
    // called after network status changes
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            nonrecheabilityBool=TRUE;

            NSLog(@"The internet is down.");
            [self checkAndCreateDatabase];
            [self readLikeDislikeFromSyncDB];

            UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"Please connect to the internet to experience all the features of this app." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];  
            [myAlert show];  
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            Con=0;
            [prefs setInteger:Con forKey:@"conKey"];
            UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:self.libraryViewController];
            [navCon setNavigationBarHidden:YES];
            [[self window] setRootViewController:navCon];

            break;
        }
        case ReachableViaWiFi:
        {


            recheabilityBool=TRUE;
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            Con=404;
            [prefs setInteger:Con forKey:@"conKey"];
            [self performSelectorOnMainThread:@selector(storeLikeFromCTB) withObject:nil waitUntilDone:YES];
            // [self deleteAllRecordsDB];



            //  [self performSelector:@selector(storeDisLikeFromCTB) withObject:nil afterDelay:0];
            //[self performSelector:@selector(GetApps) onThread:[self myThread] withObject:nil waitUntilDone:YES];
            //[self performSelector:@selector(GetApps) withObject:nil afterDelay:0];
            [self performSelectorOnMainThread:@selector(updateToCTB) withObject:nil waitUntilDone:YES];


            [self performSelectorOnMainThread:@selector(GetApps) withObject:nil waitUntilDone:YES];            
            //[self performSelector:@selector(gotoHome) withObject:nil afterDelay:0];

            NSLog(@"The internet is working via WIFI.");


            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN.");

            break;
        }
    }

    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            if( nonrecheabilityBool==FALSE)
            {
                [self checkAndCreateDatabase];
                [self readLikeDislikeFromSyncDB];           
                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                Con=0;
                [prefs setInteger:Con forKey:@"conKey"];
                UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:self.libraryViewController];
                [navCon setNavigationBarHidden:YES];
                [[self window] setRootViewController:navCon];

                NSLog(@"A gateway to the host server is down.");
            }          
            break;

        }
        case ReachableViaWiFi:
        {
            if(recheabilityBool==FALSE)
            {

                recheabilityBool=TRUE;

                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                Con=404;
                [prefs setInteger:Con forKey:@"conKey"];
                [self performSelectorOnMainThread:@selector(storeLikeFromCTB) withObject:nil waitUntilDone:YES];
                //  [self performSelector:@selector(storeDisLikeFromCTB) withObject:nil afterDelay:0];
                //[self performSelector:@selector(GetApps) onThread:[self myThread] withObject:nil waitUntilDone:YES];
                //[self performSelector:@selector(GetApps) withObject:nil afterDelay:0];
                [self performSelectorOnMainThread:@selector(updateToCTB) withObject:nil waitUntilDone:YES];


                [self performSelectorOnMainThread:@selector(GetApps) withObject:nil waitUntilDone:YES];            
                //[self performSelector:@selector(gotoHome) withObject:nil afterDelay:0];

                NSLog(@"The internet is working via WIFI.");
                break;
            }


            NSLog(@"A gateway to the host server is working via WIFI.");

            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"A gateway to the host server is working via WWAN.");
            break;
        }
    }
}

关于iphone - 当通信类中没有可用的 interetConnetion 时,ios 显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13286129/

有关iphone - 当通信类中没有可用的 interetConnetion 时,ios 显示警报的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  6. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  7. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  8. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  9. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  10. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

随机推荐