This is similar to my other question, but I was told to make a new question so no one get mad at me.
Ok so basically, I have a UITextView on on view controller, along with a save button. When the save button is tapped, I want the text of the UITextView to be saved to the plist. Then, on a totally separate view controller, I want a UITableView to display the saved files. Hope that makes sense.
Thanks in advance,
Tate
Can you load and save plist files?
If so, when the button is clicked, do this:
[myArray addObject:myTextView.text]; // myArray is an NSMutableArray
Then save the array to the plist. Next show the next view, which contains the table view. Then the next view can load the plist into another array.
I agree with another poster on your other question that this may not be the best design decision, but I can't see your code so I won't state that as fact.
To expand on this further:
IBAction button touchUp event...add text to array (if any)...save array to plist file...change the current view controller...on the viewDidLoad of the next view controller you load the plist file into another array...then use that array to populate the table view.
Related
I try to make an app that shows Data from a plist in a tableView and when clicked pass that data to the ViewController using prepareForSegue.
I could set up the plist data appearing in the tableViewCell with cell.textLabel.textand cell.detailTextLabel.text. But until now, I was not able to get a working Segue.
How do I use prepareForSegue in order to pass over the Title and Subtitle of the Cell plus other Data that is located in the plist.
Thanks for any answer.
Use #property and #synthize for do it.
You can have a look here where there is a good explanation.
i have a view(page) with lots of textfields,date pickers, etc. This page is displayed using presentModalViewController. Now i want to save the data entered in the textfields to the tableView. Each textfields in the page corresponds to the column in the tableview.
I want to save the page's data on click of a button to the tableview as row wise.
Any Help !!
You could use a protocol and delegate object. Here is a simple example that will show you how to accomplish that:
http://www.theappcodeblog.com/2011/04/15/passing-data-between-views-tutorial-using-a-protocol-delegate-in-your-iphone-app/
Your View is presented from a ViewController, which is Controlling the View.
On clicking the save button on the View, the ViewController can pull the data from the fields in the View, and save them into a Model object which you can then add into your UITableViewDataSource array (or whatever you have to load data into your table).
You can then tell your UITableView to update row at index path, and it will pull the new data from the datasource and update your table.
Voila....
... a cleverer (is that a word) approach would be to bind your Model properties to your View elements (from your controller), so as they are updated, the model changes. The table could be using KVO to listen for Model changes and update their view components at the same time.
I am starting out with the tab bar application in XCode and I want to put a table view in one of the tabs. I know how to physically put the table view into a tab with interface builder, but I need to be able to edit the data in the table, so I'm not just left with blank cells.
So, how can I edit the data in the table?
Essentially, I want to put a navigation-based application inside the tab of a tab bar application.
Thanks for the help!
UITableViewCells don't, by themselves, support the ability for the user to edit their content. You can set up your UI to allow users to do so, but it'll take a little extra effort.
If what you're really looking for is for the user to be able to enter text into a table cell, I would add an Edit button to your text cells, so that the user can tap it to go into edit mode for a cell.
When a cell goes into edit mode, add a UITextField to the cell view and call its -makeFirstResponder method to bring up the keyboard.
When the user taps the Done button on the keyboard, call -resignFirstResponder on the text field to dismiss the keyboard, then update your table view's data source object (this is the object you've assigned to the UITableView's dataSource property) with the string from the text field's text property and remove the UITextField from your table cell and reload the table's data by calling its reloadData method. Or if you are keeping a reference to the edited table cell somewhere, you could just update the cell object directly instead of calling reloadData on the table.
You can't just add text to table cells in InterfaceBuilder. You'll need to hook your UITableView to a UITableViewDataSource, and have that data source provide the cells you want your table to display.
Here's a great starting point: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewAPIOverview/TableViewAPIOverview.html%23//apple_ref/doc/uid/TP40007451-CH4-SW2
Give this a shot http://www.amasso.info/?p=77
I was helped here a while ago about loading images from an array, but would like to know the exact details please.
Where does the code go if my app will be as simple as images that load from an array depending on whether the user chose the next or previous button? Does it go in the View Controller class?
What do I need if I literally just need one view which displays a full screen image and the image gets changed depending on the user choice, like I mentioned above?
Thanks in advance
Regards
The view controller is responsible for controlling the view (receiving events from it, doing something then passing back data to it).
That said you can store your array in the view controller or in some other model class. Either way the view controller will be responsible for taking an image from this array and giving it to the view when it receives user input.
You just need to place a UIImageView in your view controller's view. Then assuming you're using IB you create an IBOutlet property in your controller to have a handle on this image view.
Then you need to get events from your user (either a button, or some other touch) and assign it to an IBAction that your controller can handle. When you handle the action you can remove the old image and assign a new image from your array to your UIImageView.
That's about as detailed as I can go given your current question. If you need more information please give more detail.
I'm pretty new to iPhone development and have struggled to find what I consider to be a neat way around this problem.
I have a user interface where a summary of record data is displayed in a table inside a navigation controller. When the user clicks the accessory button for a row, a new view is pushed onto the navigation controller revealing a view where the user can edit the data in the corresponding record. Once done, the editing view is popped from the navigation controller's stack and the user is returned to the table view.
My problem is that when the user returns to the table view, the table still shows the state of the data before the record was edited. I must therefore reload the table data to show the changes.
It doesn't seem possible to reload the table data before it is displayed as the call only updates displayed records. Reloading it after the table has been displayed results in the old data changing before the user's eyes, which I'm not too happy with.
This seems to me like a pretty normal thing to want to do in an iPhone app.
Can anyone please suggest the best practice approach to doing this? I feel like I'm missing something.
Cheers - Steve.
The standard approach may sound like a lot of hassle at first, but is a useful pattern for a lot of situations.
In your tableview class create a method like:
-(void)editDone {
[self.tableView reloadData];
}
Add a property to your edit controller like:
#property (assign) id delegate;
Set the delegate when your accessory is clicked:
editController.delegate = self;
And when editing is complete, call your method like so:
[delegate performSelector:#selector(editDone) withObject:nil];
You can create similar methods to handle cancel of your edit component, or to carry out dismissing of modal edit controllers, etc. It's considered more classy to put all this in a protocol, if you like.
I'd implement this in the following way:
Save indexPath of a clicked cell.
Implement -[UIViewController viewWillAppear:] method of the view controller, which contains the UITableView. If saved indexPath is not nil, reload specified cells with:
-[UITableView reloadRowsAtIndexPaths:withRowAnimation:]