Is is possible to implement smooth scrolling using both a UIScrollView and placing a UITableView at somewhere starting in the middle of the screen? The UIScrollView contentSize is elongated to accomodate the additional height of the UITableView. The UITableView should be able to contain unlimited and unknown number of rows. Scrolling the entire view downwards will cause the upper non-tableview portion to first disappear and then it scrolls down just like a regular table view.
Put it in another way, I'd like to implement a table with some fixed content before the top row. Think of it like a "header area" for the tables, scrolls up and giving way to the entire table rows.
I probably know that I can implement a TableView and programatically make the first row to contain some fixed images. In this way, it will work as expected. But which is easier to implement?
You really don't want to put the table in a scroll view. When the user scrolls on the table it will not move the underlying scrollview so you won't get the effect you are looking for.
Implement viewForHeaderInSection instead and pass in the view you want to display above the first row, or set tableViewHeader.
Related
I always face problems with the UIScrollView which is:
I have a UIViewController that contains two tableViewControllers, the contents of these tables are bigger than the height of the iphone, so I need to use a scroller. I enable the scroll of the table, but the height of the table is big, so I need to scroll all the screen also, for this reason, I added a UIScrollView and I put these two tables inside, for now I have three scrolls, (for the two tables and for the UIScrollView).
What I need is: to allow scroll the tables with the scroll of whole screen, it means to combine the scroll of the table with the scroll of the UIScrollView.
Is there any method to combine the scrollers??
you dont need to put a UIScrollView behind the UiTableViews as the tableViews have their own scrollers. No matter how much data/cells you have in the tableView it will allow you to scroll easily.
Currently I have UITableViewCell's that hold sometimes really long text (up to 50,000 pixels in height after drawing). However the UITableView delegate documentation says that cells shouldn't be higher than 2009 pixels in height (any ideas why?).
It's only the first section in my table view that has the really long cell, so instead of using a cell for the first section, I thought I'd create a UIScrollView, put a UITextView as the first "cell" and add it to the scrollView, and then add the tableView to the scroll view as well (under the textView). However, having a 50,000 px high UITextView is causing huge memory problems.
What are my options? I know I could use a UITextView that scrolls, but to have a scrollable UITextView with a tableView just causes complicated scrolling behavior. I want to mimic the scrolling of a tableView.
I didn't know it would be an issue to have a 50,000 px high view in a UIScrollView. I thought that's what UIScrollView's are for? Do I have any alternatives?
I would seriously question the UI design where you must render text that large as part of a table cell. The best option would be to put a reasonably-sized summary in a cell with cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;, build a separate view for the long text, and let the user navigate to that view by clicking the disclosure indicator.
As a side note, you could also put a scroll view inside the initial table cell (not all cells must be of the same type; you can make one with a scroll view in it, and use it for the cell at index zero). It's not going to be as usable as the regular cell with a disclosure indicator, though.
I have made horizontally scrollable UITableView by adding a table view to a UISrollView and setting the scroll View frame to be what i want to display and making its content size large enough to hold the table inside it. It works perfectly fine. Now what i need to do is freeze the first column (that is not scroll it horizontally) but remaining table should horizontally.
I thought of doing this. Have a table view A and a UiScrollview containing a table view B aligned. And populate the first column data in table A and populate the remaining columns data in table B. This i feel should work for horizontal scrolling but then it wont have proper vertical scrolling as in the vertical scrolling wont be aligned. So the solution to this mite be to relatively scrolling table A vertically when table B is scrolled vertically and vice versa. But i am not how would i implement this. Any ideas.
Or is there an easier way of doing this.
Thanks
AJ
use two different tableviews. one inside scrollviw and the other outside it. then try using scrollview delegates to scroll through both tableviews simultaneously
Presumably in your cellForRowAtIndexPath method you can say something like
if(indexPath.row == 0)
{
//do not allow horizontal scrolling
}
else
{
//do allow it
}
Sorry for the pseudocode, I haven't seen your exact code so I can't comment on it myself, but that's the general idea.
I want to put a scroll view inside of the table view cell. I have a number of buttons in one cell of table view and I need to scroll that cell to show the appropriate button.
If you want to use a vertical scroll view then I wouldn't suggest you doing it because, as TechZen wrote, there will be a mess in this case.
If you want the inner scroll view to scroll horizontally then it might be achieved by 2 ways:
Implement a custom table view cell that will include a scroll view inside it.
Add a scroll view as a sub-view to your cell that you will return from tableView:cellForRowAtIndexPath: method.
I suggest you to use the second approach.
There are plenty of examples online. Usually the sub-views are labels or image views, but it is not complicated at all to add a scroll view instead...
I don't think you can do this. It would require nesting of scrollviews which isn't really supported.
Even if it was, it would be very difficult for a user to know which scrollview they were hitting with their pudgy finger. Remember, you don't have the one pixel precision of a mouse on the iPhone. You have an area of at least 15x15 pixels. You don't have a scroll bar but instead just drags anywhere on the screen.
Instead, you should use a master-detail pattern. Selecting the cell in the tableview pushes a detail view which has the scroll view with all the buttons.
Why do you want to do it like this?
I think the best idea is to draw your table view manually above your uiscrollview. I did it, and it works. It just takes more effort and drawing accuracy. But that takes a lot of time. :)
In Interface Builder, you have to set the size of the tableview and position the other elements beneath that. I want the tableview to be sized to fit any number of rows and the buttons to be moved down relative to the tableview.
Is it possible to do this without building the whole thing programmatically?
You should embed the buttons within a UIView, and set that UIView as the tableFooterView of the UITableView. You can do this in IB by dragging the view into the bottom of the UITableView. This way the buttons will always be below the last row of the tableview, though I should warn you that if there are more rows than fit on-screen, the buttons won't be visible until you scroll down. If this isn't what you want, then you'll need to do something more complicated (namely, run -layoutSubviews on the UITableView, then ask it for the rect of the last section, and use that to calculate where the buttons should go).