Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I am making an app, and I have written some code to tell me whether or not it is the first time that the user is opening it. If it is the first time, I want to display a a little "tour" of the app (similar to the app "Pages by Fifty Three", where the user swipes between pages, introducing you to the app).
How do I display a similar welcome message in my app?
TO CLARIFY: I have already got the code for determining whether or not this is the first time the app is launching. I just want to know how i get the initial welcome tour pop up, just like in the app, "Paper"?
You can save a BOOL variable (isOpenedFirstTime) in user defaults in didFinishLaunchingWithOptions: method and check it every time if this variable exists and if it's there it means that the app was previously opened. If not exist show the 'tour' and save the variable so next time it will be there.
Ok, so, delete your app from the app simulator then before you run it, make some edits in the code.
So in the viewDidLoad of your first View Controller, use this
[[NSUserDefaults standardUserDefaults]setBool:#"Yes" forKey:#"isFirstTime"];
Then you use an if statement checking if [[NSUserDefaults standardUserDefaults] boolForKey:#"isFirstTime"]; == #"Yes" if so, present your controller modally.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
I'm new to programming, so please be patient. I'd like to implement in my current app a chat, but not with other users, but rather with the app itself. In the app called "Ada" the way user interacts with the app is through various buttons that he presses, after which the app gives the answer. So, as far as I understand what I try to create has nothing to do with machine learning, so I'd like to avoid such services as DialogFlow or the same service provided by IBM, as I don't want to pay for the additional features that I will never use (I don't want my users to use keyboard input to interact with the app, I want them to use only buttons). But I'd like to create a page, which looks like a chat. The only app that I know that has implemented exactly what I need is Ada. The problem is that there is literally no page on that topic on the Internet, so I don't know where to even begin. As I don't know where to even start, I have no starting code to provide you with.
Here is a simple example of what I mean:
On the right the app gives the user a test, as user pressed "begin" button
Hope that you understand what I need and you'd help me a lot if you would explain exactly how to create such a chat.
It looks like there is a Udemy course on this very subject:
https://www.udemy.com/course/simple-ios-chat-app-in-swift-4-firebase-4/?LSNPUBID=VkwVKCHWj2A&siteID=VkwVKCHWj2A-wV3kGNSueSCVcV8Oj.3Qxw&utm_source=adwords&utm_medium=udemyads&utm_campaign=DSA_Catchall_la.EN_cc.US&utm_content=deal4584&utm_term=_._ag_95911180068_._ad_436639626698_._kw__._de_c_._dm__._pl__._ti_dsa-402185414521_._li_9059739_._pd__._&matchtype=b&gclid=EAIaIQobChMI-uSro4KM6gIVCYizCh3XiwKLEAAYASAAEgL81PD_BwE
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Here are two ways to implement a login page for a UITabBarController based ios application:
1) use the AppDelegate.m file's didFinishLaunchingWithOptions: method and if logged in, set self.window.rootViewController = self.yourTabBarController, if not logged in, set self.window.rootViewController = self.yourLoginViewController
or
2) use the AppDelegate.m file's didFinishLaunchingWithOptions: method to simply call [self presentViewController:self.yourLoginViewController animated:NO completion:nil];, where self.window.rootViewController = self.yourTabBarController is only set once, and you simply dismissViewControllerAnimated: to "yourLoginViewController" when a successful login executes.
Which one of these methodologies is better? And why?
First of all I think you have your second option backwards (I would think you would want the root to be the tab bar controller, and the login view controller to be presented and dismissed).
Which is better would depend on your specific requirements.
I generally use the first method to clearly separate the logged-out vs logged-in experiences in my apps. This is particularly useful if your "logged in" view controllers actually require a logged-in user to function correctly (such as fetching data for that user from a server, etc). If you simply don't initialize the views at all until the user logs in, you don't have to worry about handling a whole extra "not logged in" state for those views.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 9 years ago.
Improve this question
I'm trying to figure out if it is a requirement for apps submitted to the iOS appstore to show the progression of data being down/loaded (by means of a progress bar or something similar) or if simply letting the user know that loading is in progress is sufficient. My app generally only loads for 2 seconds so i figure showing a progress bar is not really necessary but if it is a requirement then obviously i have no choice. Here's hoping someone can enlighten me :)
For a two second load (and you can ensure that that's pretty much what it will ever be on all devices supported) I think you should be perfectly fine. Think of Apple reviewers as the most impatient user you have ever encountered. If you normal user is watching you app load and thinking "Is it frozen or still loading something?" the Apple reviewer is going to say it's frozen and close your app and start the write-up saying it froze.
For short activities I see no need for a progress view (I do them anyway, but that's just my preference). For long activities make sure to show some progress indication other than the beachball of death activity indicator.
I think it's a mistake to assume that Apple has "requirements" for UI elements. The UI Guidelines are just that - recommendations on how your app should behave when there's no better reason to behave otherwise. Every app writer should develop a user interface which works best for his app and his users. If you don't have a reason to break the guidelines, then follow the guidelines. If you do have a reason, and it's worth it to the user to do it your way instead of the Apple way, then do it your way.
For this particular purpose, though, I like the progress view. The reasoning being: suppose the load fails. A progress bar with no movement indicates failure, but a message saying "loading..." that continues to sit will make the user feel the app is still gainfully employed.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
After some searching, I've discovered that there's nothing I can do from my app to open one of the major map apps and start turn by turn navigation immediately. (If you know, please tell me)
In Google Maps, Apple Maps, and Waze, I can deep link into the app and have the route shown to me (usually by setting "saddr" and "daddr"), but human intervention is still required to actually start the navigation. All of these are one click away, but then the actually "Route, start, or go" button is quite small and hard to hit on a phone while you're actually in a car with your phone on a dock.
I'm just curious why this is, I can't figure it out. The only hunch I have is that they have to open a more persistent connection with the device and they want to avoid DoS attacks or something like that. It seems like an easy flag to put in their API, and I've seen various other questions trying to do what I'm trying to do.
And even if all that is true, they can still probably have a different flag where navigation is one click away with a button that covers half the screen, much better than a button barely the size of my fingertip.
Hopefully someone has some expertise on this so I don't go yelling at engineers working on the map apps.
The answer is simply that none of the major map app developers have allowed this. There is no technical reason why iOS apps couldn't do this; they just don't. The decision is probably because they want to require user interaction before starting directions, as most apps allow the user to edit parameters or choose one of several routes before navigation starts.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
I've a tabbar application with three tabs. On third tab there is a navigation controller and account setup is done there. Once the account setup is complete, I pop all the controllers on that tab and change the selected tab to first. But after then when I select the tab to third, application crash with message "message sent to deallocated instance 0x15d17cc0". This issue occurs only on iOS 7 and not happening on iOS 6 or below.
Add Exception Breakpoint from Breakpoint Navigator and find what that instance is. Most probably your problem is a simple memory management problem and it will be fixed when you autorelease that instance instead of retaining at first.
Edit: Also you can look at this great answer