Swift a two views within a collection view controller - ios

I want to know how to be able to use multiple views inside a collection view controller besides only having a collection view. I have looked at different tutorials but they only show me how to have two different views in different view controllers. I want to be able to put labels above my collection view cells. But it won't let me drag a normal view onto the collection view controller so I cannotput any labels above my cells this it what happens when I try to do it. The labels get pushed to the top left corner. Any help is greatly appreciated.

You can use a UIViewController instead of a UICollectionViewController.
To do so you can follow the accepted answer here: How to make a simple collection view with Swift

Related

Adding a collection or tableview or custom view to a scrollview in ios 8

I have a UIScrollView with lots of sub views on the scrollview. I have a picture, buttons, textfields and the like that all work fine.
Now I want to add a comment section below all this that "acts" like a UITableView.
What is the best way to accomplish this? I want the comment section to load 10 comments when that part of the view appears, and continually add 10 more comments when the 6th comment appears. There should also be an activity indicator too.
I know you can't put a collection view or tableview with a scrollview (according to Apple) as their are inherited from UIScrollView. And making the whole view controller a table view or collection view is tough since I have so many subviews and actions all linked up already.
What's the best approach?
Thanks.
You can create a new table view controller and load (add subview on cell content view) your current controller as first cell of table view controller.

Adding elements to top and bottom of UITable View Controller

I am new to objective C. I have a small app where I have used a UITableviewcontroller(TVC). I need to add four elements.,label and button above TVC and a label and button below TVC. But it is allowing only to add 2 elements., one above TVC and other below TVC. Also added element is occupying the entire width of screen. Can I overcome this restriction???
Customize the table view cell – instead of using the default style of table view cell.
this link is helpful you with sample project
http://www.appcoda.com/customize-table-view-cells-for-uitableview/
These two are tableview properties.
tableHeaderView
tableFooterView
By using the above properties you can show your own custom view on top / bottom of table view.
sample code
[self.tableView setTableHeaderView:yourHeaderView];
[self.tableView setTableFooterView:yourFooterView];
Write this code in viewDidLoad.
UITableViewController is kind of a screwed up class, in my opinion. A UITableViewController can only manage a table view, and nothing else. If you want a more complex layout where you have a table view on part of the screen, and then other view objects elsewhere, you can't do that with a UITableViewController.
However, with iOS 6 and later, there is a pretty easy solution.
You can embed a UITableViewController as a child view controller of another view controller.
What you do is to create a parent view controller with everything you need. Then you create a container view on your parent view controller and size it to contain your table view. Then you create a separate scene in your storyboard that defines a table view controller. Finally, you control-drag from your container view to your UITableViewController, and create an embed segue.
I have a project on github that demonstrates this technique:
Demo project using UITableViewControllers as child view controllers

Multiple UITableViews visible at once in one UIViewController

I have seen questions asked about mutliple UITableViews in one view but they all have only one table visible at a time. I am after something different please.
In my head I want four UITableViews visible in one UIScrollView inside one UIView. The four tables will be visible and populated at once. They will have a dynamic number of rows each so the scroll view will allow users to scroll off of the page to see rows that do not fit.
The tables would be two side by side and then below them the next two side by side so that you end up with a 2x2 square.
I can (sort of) wrap my head around how to code this in the controllers etc. but I cannot figure out how to organise the hierarchi. I have tried using the storeboard to layout the tables inside the view but 9 out of 10 attempts to drop controls in fail as I am obviously not fully understanding this.
Do I need to generate the UITableViews in the UIViews implementation file and add them as objects to the UIView? Or can I use the Storyboard?
Could someone please explain how the hierarchi of objects would be structured?
In my head it would be:
UIViewController
-> UiView
---> UIScrollView
------> UITableView
------> UITableView
------> UITableView
------> UITableView
But trying this in Storyboard doesn't work. I assume each UITableView will want its own UITableViewController and what I have read in other posts I would likey need to do this connecting in the UIViewController implementation file.
Any help is appreciated.
I think you might try to drag UITableViewController into your view Controller, at least I don't have that problem to add 4 table view into a scroll view.
here is how i added it
1.> Drag the scroll view control into view controller
Your view controller should look like this:
2.> Drag the table view control into the scroll view, and set the size and position of that table view
Your view controller should look like this:
3.> Then drag all the rest 3 table views onto Scroll view
But i would like to suggest a couple of things in your case
no using that much table view in the same view controller, it's a chaos in your codes to maintain all them. There are always better
options than 4 table view, maybe consider collection view. or even
separate the use flow.
If i were you, i won't use table view inside Scroll view, they are like scroll view inside scroll view, if you don't design the
interaction very very well, they become extremely hard to use.
If you still want to use four table view in the same view controller after all, you want to pay extra attentions on your table view datasource and delegate. very carefully handle all the cases.
Hope that helps you.
Tableviews are very customized scrollviews. I wouldn't put 4 of them on a scrollview, this wouldn't be very intuitive for the user as your finger would scroll the view in many ways depending on where exactly it touches the screen.
Instead, try having your 4 tableviews in a 2x2 pattern directly onto a simple UIView. This can be done inside the Storyboard.
As for filling up and using them, you have 2 ways :
A) Your UIViewController is the delegate and datasource of each of the 4 tableviews. When executing, you perform a switch on the first parameter (the tableview that called you) to determine the appropriate course of action.
B) You create 4 classes that each handle a single tableview, instanciate 4 objects inside your UIViewController and assign the UITableviews' delegate and datasource properties to these objects.
All technicality aside, 4 tableviews in a single screen is pretty crowded. Your design will definitely not fly on a iPhone, so I'm assuming iPad only. Even then, you should make sure that everything is visually appealing and the purpose of each control is clear. It's up to you, but I'd hate to see you work hard on an application only to see your efforts wasted because your visual design doesn't appeal to your users.
If the table views take up the entire region of the scroll view then they wont let any scroll events past to the scroll view that contains them, unless the scroll is horizontal.
For a simple one to one between a table view and a view controller, I would make each table view part of it's own UITableViewController (so you have four), and then make a UIViewController that adds each of the UITableViewControllers to it as a child.
This way you don't have to do any fancy logic around if statements on which tableview is asking for data, because the table view controllers only have one table view.
https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

Adding a split view controller to a single view project in Xcode 5

I have an application that is working quite well, but the customer wants to combine two of the views (UIViewControllers) in to a single view (a Split View Controller).
The master part of the view will be a table with a list of Staff in a TableView, and the detail view will be made up of two Table Views - one that contains details about the member of staff (name, phone, ext, office etc) and the other with training records (courses, qualifications and so forth).
When you click on the master table, it selects the detail records for the given member of staff and displays them in the detail view.
I have no storyboard in the application, and use [self presentViewContoller] to switch from view to view (because there is a lot of conditional processing on what view is required and a storyboard seemed to be too restrictive)
However I have tried the following :-
Creating a SplitViewController (right click, New File, UISplitViewController), but it seems to be empty with no master or detail views. Also, when I try to make it appear, it either doesn't appear, or causes it to crash (tried to present a SplitViewController modally).
Creating a "fake" split view controller, by putting two views on a normal view controller, then putting the required tables inside them. However I can not find a way to present any borders or the like, and the whole thing looks a tad unprofessional and stupid.
So my question is basically this :-
Is it possible to create SplitViewControllers in single view projects, and use them?
Or, if not, is it possible to put borders around views, or tables, or draw a single straight line on a view?
(If at all possible, I would prefer not to have to rewrite my entire application and just add this SplitView controller or the "fake split view Controller")
You can use container views:
Create a new root view controller and add two container views to it. This will create two embed segues that you can point to the view controller's whose views you want to appear in these containers.
You cannot control two UIViewController simultaneously.
So, try displaying two UIView or subclasses of UIView like UITableView.
Displaying Two UITableView is a little tiresome.
Take a look at this question Two UITableView in the same view
As for borders around views, you can put UIImageView or something as border lines.
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(159, 0, 2, 640)];

Use a Collectionviewcontroller on a view inside main view

In my IPad Application I have a main view and it contains three child views
top
middle
and bottom
Is it possible to use different view controller on different child views?
For Example i want to use collection view controller on the bottom view and top view.
if yes then is it possible to add and delete cells dynamicially? A small example would be appreciated.
If you are using iOS 6 you can create a container view controller easily in a storyboard by dropping ContainerView from the object library.
Otherwise you will need to implement a container view controller manually. See the documentation.
To Use a collection View Controller on a view first you have to create a UICollectionViewController with its CollectionView somewhere else. you can create this CollectionViewController in interface builder or programatically. then treat the collectionView of the UICollectionViewController as normal View and add it to your View with desired frame.
If you are not familiar with CollectionView then take a look at some Tutorial on UICollectionView on Google
UICollectionView tutorial

Resources