Discussion Forums  >  Config Data, JSON, App Refresh

Replies: 36    Views: 172

mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
04/07/13 07:12 AM (11 years ago)

Tutorial iOS: How To Localize the CONTENT of BT 2.0 & 3.0 Apps

I've been procrastinating for a while to add this to my apps, but realized its very easy. Requirements: Two separate buzztouch apps (your choice of two different languages) created in the Buzztouch.com or BT-Server, iOS of course. Here is the pdf tutorial and the cheat sheet to make it faster to copy and paste. http://www.snurlz.com/wp-content/uploads/content-localization-ios.pdf http://www.snurlz.com/wp-content/uploads/cheatsheetlocal.txt
 
MadRod
Aspiring developer
Profile
Posts: 1853
Reg: Apr 12, 2012
Lisbon
27,930
like
04/07/13 07:35 AM (11 years ago)
Hey, this is cool. The problem I'm having is that the app loads the correct BT config file the first time the app loads, but when i change language, I get the info from the log, that the app loads the cached version of the config file, and not the new config file for the new language. Did this ever happen to you? Miguel
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/07/13 07:41 AM (11 years ago)
Hmm.. It didn't happen to me most likely because I don't use a data file from my server. My content is offline so perhaps thats the issue? Not sure.. Most of my apps are offline and any updates that I have I'll just update through Apple. But it loaded the English version and when I changed the language the content loaded Spanish like I wanted. Of course not everyone wants their app offline.I could test it and report back
 
SmugWimp
Smugger than thou...
Profile
Posts: 6316
Reg: Nov 07, 2012
Tamuning, GU
81,410
like
04/07/13 02:43 PM (11 years ago)
Thanks MySPS :) Cheers! -- Smug
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/07/13 05:14 PM (11 years ago)
I will be implementing this method today also (online apps) will let you know how I go. Thanks Mysps! Mick
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/07/13 09:12 PM (11 years ago)
Hi all, I'm a bit stuck, after copy pasting into appdelegate.m & h the code from mysps's cheat sheet, I have gotten a semantic Issue/error? In appDelegate.m I have a warning at @implementation (incomplete implementation) & an error at the line; -(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ [BT_debugger showIt:self theMessage:[NSString stringWithFormat:@"didRegisterForRemoteNotificationsWithDeviceToken: Device Token: %@", deviceToken]]; ! Invalid argument type 'void' to unary expression. If I delete the added lines it goes away? What gives? Cheers Mick
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/07/13 11:31 PM (11 years ago)
Did you synthesize the arrays from the header at the top of the delegate file? Can you upload a screenshot Missing a bracket?!
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/07/13 11:46 PM (11 years ago)
Sorry for the delayed reply but I have gotten it working since that last post, I indeed missed a bracket ;} I am having an issue though with the default BT_Config.txt file causing havoc with refresh on the simulator (Works properly after reset - then default English when refresh button is pressed) and from get-go on iphone 6.1. I think because my app is online it is looking at a more recent version? In the log it says that BT_Config_ja.txt exists but it displays in English except for the localized.Strings translations? Should I take my app offline? Do I just remove the DataUrl and ReportToCloudUrl strings from all three BT_Config files? Mick
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/08/13 12:04 AM (11 years ago)
hmm. That's what I did..what if you remove the Bt_config.. And just load from bt_config_en.txt and bt_config_ja.txt ? Can you try and report back? Otherwise if you don't need your app online I would take it offline but I understand the need for quick changes via the cpanel as oppose to a 7 day wait
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/08/13 12:17 AM (11 years ago)
I have tried removing the default one and it just loads an app with a black screen. I just removed those strings from my config files and it works correctly! It is pretty much as good as it is gonna get from the panel side so I may just leave it this way for now? Thanks for all your suggestions. And your awesome guide! BTW I have a Japanese Strings file now if anyone needs a copy? Mick
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/08/13 12:23 AM (11 years ago)
Bugger it i'll just paste it here: //misc. text "back" = "戻る"; "next" = "次に進む"; "done" = "完了"; "ok" = "了解"; "yes" = "はい"; "no" = "いいえ"; "home" = "ホーム"; "continue" = "続き"; "quit" = "終了"; "cancel" = "キャンセル"; "error" = "エラー"; "errorTitle" = "~ エラー ~"; "loading" = "...ローディング..."; "search" = "サーチ..."; "updatesAvailable" = "このアプリをアップデートしますか?"; //Paint.m Plugin "Color" = "カラー"; "Brush" = "ブラシ"; "Clear" = "消去"; "Save" = "セーブ"; "Clear Paint" = "ペイントを消す"; "Are you sure you want to clear all?" = "全て消去してもいいですか?"; "Export Success" = "成功をエクスポート"; "Successfully saved to photo album!" = "首尾よく写真をアルバムに保存されました!"; "Start New" = "新しいをはじめよう"; "Continue" = "続き"; "Yes" = "はい"; "No" = "いいえ"; //alerts for calling prompt "callTitle" = "電話"; "callMessage" = "電話をかけますか?"; "callCancel" = "電話をかけない"; "class" = "クラス"; //generic postings (twitter, facebook, chats, etc) "messagePosted" = "メッセージをポストしました。"; "messagePostedMessage" = "貴方のメッセージがポストされました。"; "invalidMessage" = "貴方のメッセージは、長すぎるか短すぎますので、もう一度お試しください。"; "twitterLoginRequired" = "ツイッターにログインしてからメッセージをお送りください。"; "facebookLoginRequired" = "フェイスブックにログインしてからメッセージをお送りください。"; "routeDrivingDirections" = "道案内のネイティブアプリを開きますか?"; //misc messages used in web views when tapping links "launch_iTunes" = "アイチューンを開けますか?"; "launch_maps" = "マップを開けますか?"; "launch_sms" = "SMSを送りますか?"; "launch_webBrowser" = "このページをサファリで開けますか?"; "launch_errorTitle" = "このURLを開ける事が出来ません。"; "launch_errorMessage" = "貴方のディバイスがどのアプリを使ってこのURLを開ければいいのか決める事が出来ません。"; "launch_unsupportedUrlMessage" = "このURLこのアプリでは開けられません。サファリで開きますか?"; "launch_emailDocument" = "このドキュメントをEメールしますか?"; //connection error messages "connectionError" = "インターネットのコネクションに問題があります。"; "downloadError" = "このデーターをダウンロードする事が出来ません。インターネットの接続をご確認の上もう一度お試しください。"; "noLocalDataAvailable" = "このスクリーンのデーターはダウンロードされていません。インターネットの接続をご確認ください。"; "errorSavingData" = "キャッシュにデーターをセーブする際に問題が起こっています。"; //application data parsing errors "appInitError" = "このアプリを初期化する際に問題が起こっています。"; "appBundleFileMissing" = "ファイルセットBT_appDelegate.mの設定がXcode内で見付かりません。"; "appDownloadError" = "インターネットからダウンロードしたデーターのセーブに問題があります。"; "appParseError" = "設定データーの構文解析に問題があります。設定データーが適格稼働かご確認ください。"; "appDataInvalid" = "このアプリケーションの設定データーが無効です。"; "appNoScreensError" = "表示するスクリーンがありません。"; "appScreenNotFound" = "スクリーンが見付かりません。"; "appPlugInNotFound" = "プラグインが見付かりません。"; "appCachedDataInvalid" = "このディバイスのキャッシュに格納された設定データーが無効です。"; "appBundleDataInvalid" = "プロジェクトバンドルの設定データーが無効です。"; "noListItems" = "このメニューにはリストがありません。"; "noButtonItems" = "このボタンスクリーンにボタンがありません。"; "noImageItems" = "このイメージギャラリーにイメージがありません。"; "noLocationItems" = "このマップで表示できるロケーションがありません。"; "noQuestionItems" = "このクイズには質問がありません。"; //error determining action for buttons and menu items "menuTapError" = "このアプリケーションでどのような働きをすればいいのかが分かりません。"; "attachDocumentError" = "ドキュメントの添付に問題があります。"; //features not supported messages "callsNotSupportedTitle" = "電話がサポートされていません。"; "callsNotSupportedMessage" = "電話はこのディバイスではサポートされていません。"; "emailsNotSupportedTitle" = "Eメールはサポートされていません。"; "emailsNotSupportedMessage" = "Eメールを送る事はこのディバイスではサポートされていません。"; "textMessageNotSupportedTitle" = "SMSはサポートされていません。"; "textMessageNotSupportedMessage" = "SMSやテキストメッセージを送る事はこのディバイスではサポートされていません。"; "locationNotSupported" = "このディバイスのロケーション情報が得られません。この昨日はロケーション情報がないと働きません。"; "customURLSchemeNotSupported" = "URLを開く事が出来ません。"; "customURLSchemeNotSupportedMessage" = "このURLスキームを使ってアプリケーションを開く事が出来ません。"; //misc. buttons "submit" = "サブミット(投稿する)"; "loginButton" = "ログイン"; "logoutButton" = "ログアウト"; //device info "clearCache" = "キャッシュを消す。"; "cache" = "キャッシュ:"; "cacheCleared" = "全てのキャッシュデーターは消去されました。"; "cameraSupportYes" = "写真: はい"; "cameraSupportNo" = "写真: いいえ"; "videoCameraSupportYes" = "ビデオカメラ: はい"; "videoCameraSupportNo" = "ビデオカメラ: いいえ"; "phoneCallSupportNo" = "電話をかける事が出来る: いいえ"; "phoneCallSupportYes" = "電話をかける事が出来る: はい"; "emailSupportNo" = "Eメールを送る事が出来る: いいえ"; "emailSupportYes" = "Eメールを送る事が出来る: はい"; "smsSupportNo" = "SMSを送る事が出来る: いいえ"; "smsSupportYes" = "SMSを送る事が出来る: はい"; "display" = "表示:"; //login screen "labelLogInId" = "Eメールアドレス"; "labelPassword" = "パスワード"; "loggedInMessage" = "ログインしている"; "loggedOutMessage" = "ログアウトした"; "loginRequired" = "~ ログインが必要です ~"; "loginRequiredMessage" = "ログインされていません。このスクリーンはログインが必要です。"; "invalidLogin" = "ログインが無効です"; "invalidLoginMessage" = "貴方のログインの信用証明が有効ではありません。もう一度試してください。"; "loginSubmitError" = "ユーザーネームとパスワードを入力し直してお試しください。"; "confirmLogout" = "ログアウトしますか?"; //image toolbar function "emailImage" = "イメージをEメイルする。"; "saveImage" = "イメージをセーブする"; "chooseImage" = "イメージを選ぶ"; "takeNewImage" = "新しいイメージを撮る"; "uploadImage" = "イメージをアップロードする"; "uploadComplete" = "アップロードが出来ました。"; "uploadCompleteInfo" = "アップロードが出来ました。他のイメージをアップロードするか、キャンセルして前の画面に戻る。"; "uploadFailed" = "アップロード出来ませんでした。"; "uploadFailedInfo" = "もう一度試すか、キャンセルをして前の画面に戻る。"; "emailImageDone" = "このスクリーンをリロードしてやり直すか、他のメッセージを送る。"; "addImageCaption" = "イメージにキャプションを入れる。"; //audio player "audioLow" = "下げる"; "audioHigh" = "上げる"; "audioNotLoaded" = "オーディオがロードされていません。"; "audioPlaying" = "オーディオをプレイする"; "audioStopped" = "オーディオをストップする"; "audioDownloading" = "オーディオをダウンロードしています..."; "audioLoading" = "オーディオをローディングしています..."; "audioLoadingError" = "オーディオのローディングに問題があります。"; //quiz "quizStart" = "クイズを始める"; "quizGo" = "ゴー!"; "quizRotateMessage" = "ディバイスを回転してください。"; "quizCorrectAnswers" = "正解"; "quizIncorrectAnswers" = "不正解"; "quizElapsedTime" = "時間の経過"; "quizTotalScore" = "トータルスコアー"; "quizTryAgain" = "もう一度試す"; "quizShowScoreboard" = "スコアーボードを見る"; "quizShowReward" = "リワードを見る"; "quizScoreboard" = "スコアーボード"; "scoreboardScreenName" = "スコアーボードスクリーンネーム"; "scoreboardMessage" = "(他の人が見れます)"; "quizShareText" = "結果をシェアーする";
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/08/13 12:24 AM (11 years ago)
Great! Glad you got it working! The strings would be awesome..Susan has put together a localization project and is accepting string files if you can upload it here or send them directly to her she can add them to the website [email protected]
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/08/13 12:27 AM (11 years ago)
Sweet! Thanks a lot. My typing on the iPad is super slow haha
 
mikoz
I hate code!
Profile
Posts: 51
Reg: Nov 14, 2010
Australia
3,610
like
04/08/13 12:39 AM (11 years ago)
No prob, glad to be of some service to the BT community ;) Once I have Chinese, French, Spanish done I'll post them also. Mick
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
04/08/13 12:41 AM (11 years ago)
I believe French ans Spanish are done Here are the list of files if you need them http://whitebuffalomobile.com/Localization/localization.html
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
04/08/13 06:04 PM (11 years ago)
Thank you so much, @mysps and @mikoz! I already added the tutorial to the How-to's--as a new How-to and also to the White Buffalo Mobile content. I will put the Japanese up next. This is so cool!
 
Antonios
Apple Fan
Profile
Posts: 381
Reg: Feb 12, 2013
Korinthos, Gree...
4,610
like
05/26/13 04:31 PM (10 years ago)
with this guide every screen will load from the appropriate app? even xib files?
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
05/26/13 08:08 PM (10 years ago)
The only thing that varies in the project is the config file. So you could have different images linked to the different config file, but there wouldn't be additional xibs files. But if the app works well with one config file, it should work just fine with another.
 
MadRod
Aspiring developer
Profile
Posts: 1853
Reg: Apr 12, 2012
Lisbon
27,930
like
05/27/13 01:35 AM (10 years ago)
U basically have two apps in one. As longs as you have the plugin files and any other files needed for both apps, it's fine.
 
Antonios
Apple Fan
Profile
Posts: 381
Reg: Feb 12, 2013
Korinthos, Gree...
4,610
like
05/27/13 02:25 AM (10 years ago)
ok I'll give it a try when the time comes up...Thanks everyone for all your help and tutoring. :)
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/06/13 09:26 PM (10 years ago)
Say, I am trying to put this into an app for the first time. I can see in the log that the BT_ config.txt file changes over to BT_config_es.txt file, but then the app crashes right after it calls home. I can see it is finding my Spanish config file: 2013-06-06 23:20:54.217 chrw[1823:907] chrw_appDelegate: Using the default BT_config.txt. 2013-06-06 23:20:54.223 chrw[1823:907] ##### es 2013-06-06 23:20:54.226 chrw[1823:907] BT_fileManager: File does exist in Xcode bundle: BT_config_es.txt But then the app crashes with the EXC_BAD_ACCESS error. This particular app has to be attached to the cloud. Any ideas? Has anyone done this with the app connected to the Control Panel? Thank you!
 
MadRod
Aspiring developer
Profile
Posts: 1853
Reg: Apr 12, 2012
Lisbon
27,930
like
06/07/13 03:17 AM (10 years ago)
Hey Susan, I had a lot of trouble with this. But, obviously, David got it working for me. If you saw my last app you can see it work. Email me if you want me to send you the changes made. Cheers.
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
06/07/13 04:12 AM (10 years ago)
@Susn I haven't tried it yet, sorry @MadRod it would be nice if you post what was changed for Buzztouch users. Share and share alike :) If it isn't difficult of course. Was the change made in the delegate file or some place else. Most of my apps are offline but it would be nice to know!
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/07/13 02:34 PM (10 years ago)
We need to add the instructions to the PDF that mysps made. Say, now I have a different problem. Just to see if it worked, I disconnected my app from the cloud in all three config files. Now the app doesn't crash, but it also doesn't find the spanish config file. 2013-06-07 16:20:26.068 chrw[2387:907] chrw_appDelegate: Using the default BT_config.txt. 2013-06-07 16:20:26.074 chrw[2387:907] ##### es 2013-06-07 16:20:26.078 chrw[2387:907] BT_fileManager: File does not exist in Xcode bundle: BT_config_es.txt I wonder if I am missing an obvious step. @mysps, when you say to "import" the file into the project, it that just dragging it into the project, or is there some other step to adding a config file? But I don't think I am missing anything--see my post above. When the apps were connected to the cloud then it could find the config file.
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
06/10/13 05:07 AM (10 years ago)
Susan, Yes just drag it in. Later I've realized that I've had to copy the same contents of: BT_config.txt and BT_config_en.txt Previously, I deleted the BT_config.txt file and later I received an error. So total I have three config files --> all offline data inside the config file BT_config.txt BT_config_en.txt BT_config_es.txt .. Once I get back to the US, I'll try to figure out the online app config unless @MadRod shares it with us first. If you did get the cloud version updates from David, do you mind adding it to the Localization project page @Susan? I'm sure I can figure it out, I just need time. I hope that helps. I'll update my tutorial if you're still having problems.
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/10/13 06:36 AM (10 years ago)
I got it working, except that in order to change config files you have to delete the app, change the language, and reinstall the app. It is kind of a pain for testing, but the app is usable now. I couldn't get Miguel's code to work, and I am not sure what I did that fixed it. I will clean it up and post the code I used here.
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/10/13 06:40 AM (10 years ago)
One more thing....we should see if we can get this code added to the core code so we don't have to add it at all. That would be really slick.
 
MadRod
Aspiring developer
Profile
Posts: 1853
Reg: Apr 12, 2012
Lisbon
27,930
like
06/10/13 09:06 AM (10 years ago)
Add it to the code would Be great, but Stobe's new plugin Will help with that.
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/10/13 09:24 AM (10 years ago)
You are right! That will be the solution. I hope it will be for Android too, at least eventually.
 
MadRod
Aspiring developer
Profile
Posts: 1853
Reg: Apr 12, 2012
Lisbon
27,930
like
06/10/13 09:43 AM (10 years ago)
The only diference is that it wont load a config depending on your device settings, you'll have to choose it. But it Will help.
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/10/13 10:47 AM (10 years ago)
Here is what I have in the project. Like I mentioned before, I am not sure this is quite the best solution because the only way I can get the app to find the config file is to reinstall the app. But it does seem to work other than that. Add these to your appDelegate.h file: NSMutableArray *langCodes; NSMutableArray *langNames; @property (nonatomic, retain) NSMutableArray *langCodes; @property (nonatomic, retain) NSMutableArray *langNames; -(void)switchLanguage:(NSString *)newLanguage; Switch over to your appDelegate.m file: Add this to the didFinishLaunchingWithOptions method: //init language arrays self.langCodes = [[NSMutableArray alloc] init]; self.langNames = [[NSMutableArray alloc] init]; //fill up the language codes [langCodes addObject:@"en"]; [langCodes addObject:@"es"]; //fill up the language names [langNames addObject:@"English"]; [langNames addObject:@"Spanish"]; //determine the language NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; NSLog(@"Device language is set to %@",language); //build the name of the language file NSString *languageFileName = [NSString stringWithFormat:@"BT_config_%@.txt",language]; NSLog(@"languageFileName will be %@, if available", languageFileName); if([BT_fileManager doesFileExistInBundle:languageFileName]){ //EDIT: David Book //direct assignment not good, use "set" instead.. //configurationFileName = languageFileName; [self setConfigurationFileName:languageFileName]; NSLog(@"languageFileName has been set to %@", languageFileName); }else{ [BT_debugger showIt:self theMessage:@"Using the default BT_config.txt."]; [self setConfigurationFileName:@"BT_config.txt"]; } Add this to viewDidLoad, right after "self.configData = @""; //use a saved config file name if it exists... NSString *tmpConfigFileName = [BT_strings getPrefString:@"configToUse"]; if([tmpConfigFileName length] > 5){ [BT_debugger showIt:self theMessage:[NSString stringWithFormat:@"Using a non-default configuration file: %@", tmpConfigFileName]];//FROM MIGUEL [self setConfigurationFileName:tmpConfigFileName]; }else{ [BT_debugger showIt:self theMessage:@"Using the default BT_config.txt."]; [self setConfigurationFileName:@"BT_config.txt"]; } Add this method right before the //dealloc (at the end) //EDIT: David Book //switchLanguage... -(void)switchLanguage:(NSString *)newLanguage{ [BT_debugger showIt:self theMessage:[NSString stringWithFormat:@"switchLanguage Selected Lanugage: %@", newLanguage]]; //build the name of the language file... NSString *languageFileName = [NSString stringWithFormat:@"BT_config_%@.txt", @"pt-PT"]; //if this config file exists in the bundle...use it... if([BT_fileManager doesFileExistInBundle:languageFileName]){ //reset the config... [self setConfigurationFileName:languageFileName]; //delete previously cached data... [BT_fileManager deleteAllLocalData]; //reload the app's data (the JSON from this config file)... [self loadAppData]; } }
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
06/10/13 01:55 PM (10 years ago)
Awesome. I'll check that solution later. I guess Stobes plugin is the AppSwitcher? will it help with localization?
 
Susan Metoxen
buzztouch Evangelist
Profile
Posts: 1706
Reg: May 01, 2011
Hopkins, Minnes...
26,260
like
06/10/13 02:04 PM (10 years ago)
If I remember it right, it lets you change the config file within the app. I think he was thinking of it more from a gaming perspective--if you pass one level, then you get a new config with more levels. But it looked like it could be set up to change languages as well.
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
06/10/13 02:18 PM (10 years ago)
Sweet. I like the sound of that! Thanks
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
12/15/13 11:19 AM (10 years ago)
Just wanted to update the instructions. There is a change in the instructions. After Christmas I will make another tutorial, but for now for those who are interested. A quickie I have updated the cheat sheet here: http://www.snurlz.com/wp-content/uploads/cheatsheetlocal.txt The only change is that the we won't be adding to the apps delegate. It will now be in the folder BT_Layout folder editing the following files. BT_loadConfigDataViewController.h BT_loadConfigDataViewController.m
 
SmugWimp
Smugger than thou...
Profile
Posts: 6316
Reg: Nov 07, 2012
Tamuning, GU
81,410
like
12/15/13 04:18 PM (10 years ago)
Cool! Thanks! Cheers! -- Smug
 
mysps
Code is Art
Profile
Posts: 2082
Reg: May 14, 2011
Palma
33,320
like
01/02/14 06:16 AM (10 years ago)
I've updated the tutorial with line numbers for both 2.0 and 3.0 core projects.
 

Login + Screen Name Required to Post

pointerLogin to participate so you can start earning points. Once you're logged in (and have a screen name entered in your profile), you can subscribe to topics, follow users, and start learning how to make apps like the pros.