2012-09-01 40 views
0

好的。我的應用程序取決於具有活動的互聯網連接。當沒有一個,你可能不會使用它。最初我只是想給用戶提供一個帶有「重試連接」和「關閉應用程序」選項的alertView,但經過一些研究後,我發現蘋果對應用程序關閉自己的應用程序皺眉。因此,我決定提供一個帶有「重試連接」和「等待」選項的alertView,等待會讓你去一個相對枯燥的viewController,它會定期檢查互聯網連接(每隔15秒左右一次)。這樣做的想法是讓用戶通過主頁按鈕退出應用程序,或者在重新建立互聯網連接時重新開始遊戲。如何從任何當前的viewController轉到特定的viewController?

然而,正如你可以想像,上網可以去在任何給定時間(當你在任何給定的視圖控制器)。這意味着使用segues是不可能的,因爲我不得不做一些愚蠢的事情,從每個viewController到這個等待viewController。

有什麼想法嗎?有沒有[自我gotoViewControllerWithTitle:@「等待」];我不知道的命令?

我想我可以做一個視圖控制器我想,只是值傳遞給其他的風險投資,如果它來到了這一切的我的互聯網相關的東西發生,但似乎非常有限/嬰兒。

謝謝你在先進的任何幫助表示讚賞:)。

回答

2

讓你的應用程序代理沒有檢測到互聯網,並提出您的莫代爾「沒有網絡」視圖控制器。然後,當互聯網返回「dismissModalViewController」,並嘿presto,你以前的視圖控制器是在下面。

+0

好的。這似乎是一個有效的答案。我該如何去讓我的應用程序委託來執行視圖控制器的檢查和演示?我已經實現了一個方法來檢查每個viewController中的連接。我會使用NSTimer定期檢查應用程序代理中的連接嗎?以及如何讓它呈現視圖控制器?我以前只和'performSegueWithIdentifier:'合作過,並且需要一段時間才能出席。有沒有'presentViewControllerWithIdentifier:'? –

+1

查看「Reachability」來檢查互聯網,你只需分配/ init一個視圖控制器,然後[self.rootViewController presentViewController:xxx]。 –

+0

謝謝。我已經導入了Reachable,然後在這個線程中選擇了anser:http://stackoverflow.com/questions/3790957/reachability-guide-for-ios-4 除了一個黃色三角形表示「不完整的實現」外,一切都看起來不錯。然後當我按運行時,我得到來自Reachable.m文件的十個紅色錯誤,說「ARC禁止釋放的顯式消息發送」,「NSAutoReleasePool在自動計數參考模式中不可用」和「Cast of C pointer of type' void *':指向objective-c指針類型'Reachability *'等等任何想法?也許可到達文件已過期? –

1

您可以繼承'UIViewController'以創建您自己的基礎'UIViewController',以便擁有一個檢查連接和斷開連接的通用方法,調用一個模式視圖控制器,指出用戶已經失去連接。然後甚至可能彈出到根視圖控制器。然後繼承該類,然後每個UIView控制器現在都將具有所需的功能。 OOP FTW

在一個側面說明,有一個程序,將只與網際網路連線的功能是一個非常糟糕的主意。當用戶在失去連接時被迫退出應用程序時,很難保持用戶的注意力。

+0

謝謝。我對Objective-C和OOP比較陌生。我將如何去創建子類等?您的解決方案聽起來很有效,但不幸的是,我將不知如何實施它。我會首先嚐試dorada的解決方案,因爲這似乎是更容易的選擇,但如果您可以如此友善,我仍然會對您的解決方案有更詳細的解釋,因爲這種編碼方法對我掌握非常有用。 –

+0

在第二個注意事項中,如果您的應用程序沒有互聯網連接而沒有功能,那麼您的評論是一個糟糕的主意,這似乎是非常有效的。實際上,我可能在實施具有有限功能的離線模式。然而,最初的問題仍然存在,因爲它可以應用於許多不同的情況。 –

+0

嘿,很抱歉,響應時間很長...... 但是對於子類,您只需要⌘+ N並創建一個新的Objective-C類。然後在'Subclass of:'類型下輸入要從中繼承的類。它可以是任何Foundation/UIKit類,也可以來自您自己的用戶定義的類。 最後一點,obj-c和oop相對來說比較新,我會建議在嘗試製作一個完整的應用程序之前嘗試接受小型項目和功能。可能性是,它不會是一個非常有效的應用程序,作爲應用程序開發人員的聲譽將受到第一個應用程序的極大影響。先學習你的東西。 – brianSan

0

讓你的「無連接視圖控制器」一個單獨的對象。然後,您可以使用類方法訪問同一個實例(例如:[MyNoConnectionViewController shareInstance])。

+1

我不會在這裏使用一個單身人士。這對代碼重用是不利的,它會創建一個不必要的依賴關係。 – Rengers

相關問題