Fixed footer of a UItableview. always at the footer position - iphone

Im trying to have a footer Fixed at the bottom of a uitableview. it will always be at the bottom, not scrollable with the table cells. It also cant cut out and cells like cover the last cell of a uitable view so one cell will be hidden. I have the following header file:
//fooer contains a number_of_total_clicks label, an a proceedtopayment button.
#interface checkout : UITableViewController
#property (retain, nonatomic) IBOutlet UILabel *number_of_total_clicks;
- (IBAction)proceedtonextview:(id)sender;
#property (retain, nonatomic) IBOutlet UIView *footer; //?
#property (strong, nonatomic) NSMutableDictionary *items_clicked;
#end
and in my .m file
- (void)viewDidLoad
{
[super viewDidLoad];
//self.tableView.tableFooterView= footer; ??
number_of_total_clicks.text=#"0";
}
//void or IBAction?V
- (void)add_item_to_array_of_clicks_which_will_increment_number_of_total_clicks_value:(id)sender{
number_of_total_clicks.text=[NSString stringWithFormat:#"$%.2f",[sender doubleValue]*5];
[self.tableView reloadData];
}
What happens is I get a footer the is basically attached to the last cell of the table so if the table has only 3 cells, the "footer" with the number_of_total_clicks will be attached as a 4th cell. if there are 45 cells, he footer will be he 46th cell only accesible once I scroll all the way down. I want it o be fixed a the bottom. Thanks

In your -loadView method try manually creating your view using [UIScreen mainScreen]. applicationFrame as the frame. Note that you should use a UIView, not a table view.
This view will fill the whole screen (except for tab and navbars, when using them).
You can then manually add a UITableView as the VC's tableView, but don't make it fill the whole view. Leave some space at the bottom, just as much to fit your 'table footer' in. Remember to set the tableView to have a flexible width as well as a flexible height.
Now for the 'table footer' just add it as a subview to self.view (not self.tableView) and place it at the very bottom of self.view. This view should have a flexible width and a flexible top margin.
I hope this fits your needs.

Related

UIScrollView stops working when label text in UIScrollView is changed

I have had this problem for a long time now, I hope stackoverflow can help!
THE PROBLEM IS
When I enter "Alan Shearer" into the EnterNameText (UI TEXTFIELD) the label changes text, however the ScrollView no longer scrolls to the set content size, it will scroll a little bit, but no were near the set content size, in this case 2000px in height.
details
1) Xcode 4.5.1
2) IOS 6
In my .xib file ( tinypic.com/view.php?pic=2h4yx3o&s=6 ) I have a UIScrollView (320 pixels in width, and 490 pixels in height)
The UIScrollView contains labels that are all connected to view controller.h.
The Label (all labels are set in the same way) :
#property (strong, nonatomic) IBOutlet UILabel *AlanShearerLabel;
my UIScrollView in ViewController.h looks like this:
#property (strong, nonatomic) IBOutlet UIScrollView *scrollview;
UIScrollView in ViewController.m
- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated]; self.scrollview.contentSize=CGSizeMake(320.0, 2000.0); }
An IBAction called - (IBAction)CheckButton:(id)sender
The action when CheckButton is clicked:
//string 0
NSString *string0 = _EnterNameText.text;
//Alan Shearer
NSString *string1 =#"Alan Shearer";
NSString *string2 =#"Rank 1) Alan Shearer 260 Goals";
NSString *stringshearer =#"Shearer";
//Alan Shearer IF
if([string0 isEqualToString:string1]||
[string0 isEqualToString:stringshearer])
{_AlanShearerLabel.text = string2;
_AlanShearerLabel.textColor = [UIColor greenColor];
_EnterNameText.text=#"";
}
To solve this issue you must be sure to define all the things inside the scrollview before you link the scrollview to the .h file. For example if you have 20 labels in a scrollview, be sure that the 20 labels have been connected to the .h file, set the right size, put in the right place. Only then do you connect your scrollview to the .h file and place the scrollview code in viewDidAppear rather then viewdidload.

UITextView Inside UIScrollView Scrolling Parent as Text is Entered

I have a UIScrollView that contains a UITextView. As text is entered into the UITextView the UIScrollView will scroll to ensure that the text is entirely visible in the content frame. I don't want this.
I've disabled scrolling on the UIScrollView, however this has no effect. Anyone know how to stop this? A sample project can be found here: http://cl.ly/1P1u3y302r3q1f1C063K.
Thanks!
I had similar issues with UITextView. It seems scrollEnabled property does not cancel autoscrolling. I have solved it by overriding setContentOffset: method.
The following preventScrolling flag might help:
#interface MyScrollView : UIScrollView
#property (nonatomic, assign) BOOL preventScrolling;
#end
#implementation MyScrollView
#synthesize preventScrolling;
-(void) setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
{
if(!self.preventScrolling) {
[super setContentOffset:contentOffset animated:animated];
}
}
#end
you have set the wrong contentSize: of scroll view....
always set the content size according to content inside scroll view, if content height and width is greater than scroll view height and width then only increase the content size else put it the same as its width and height of scroll view
[self.mainScrollView setContentSize:CGSizeMake(4096, 4096)];
instead of it put this contentsize:
[self.mainScrollView setContentSize:CGSizeMake(mainScrollView.frame.size.width, mainScrollView.frame.size.height)];
may this will help you

Resizing UITableView When Displaying AdWhirl Ads Across Multiple Views

I am trying to integrate AdWhirl into my iPhone app using an AppDelegate singleton so I can use the same AdWhirl instance across multiple views, but cannot figure out how to resize the tables in those views. The code I am using is:
in ...AppDelegate.h:
#import "AdWhirlView.h"
#import "AdWhirlDelegateProtocol.h"
#interface ...AppDelegate : NSObject <UIApplicationDelegate, AdWhirlDelegate>
AdWhirlView *awView;
...
#property (nonatomic, retain) AdWhirlView *awView;
in ...AppDelegate.m didFinishLaunchingWithOptions:
awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
also in ...AppDelegate.m I add the required delegate methods
(NSString *)adWhirlApplicationKey...
(UIViewController *)viewControllerForPresentingModalView...
This code allows me to display the same Ad across multiple views but I cannot figure out how to resize a UITableView to change its height to be shorter if an Ad is displaying, so that the UITableView either displays full height if there is no Ad, or is resized if there is an Ad at the bottom of the screen. I have the UITableView as a subview of a UIViewController called myMainView.
I tried changing the autosize properties in the Nib file for the UITableView to have a variable spacer at the bottom, and am adding the AdWhirl instance into the view with this code:
...AppDelegate * myDelegate = (...AppDelegate *)[[UIApplication sharedApplication] delegate];
[myDelegate.awView setFrame:CGRectMake(0, 480-20-44-50, 320, 50)];
[self.myMainView addSubview: myDelegate.awView];
This displays the Ad at the correct location at the bottom of the screen but the UITableView is not resizing. How should I be doing this?
I think you have to create a UIView with an embedded UITableView. I've tried to do something similar and this was the only way I could get it to work. A top-level UITableView is auto-resized to take up the entire screen.
Just expanding on that, you probably want to declare something in your header like so:
#interface ExampleClass:UIViewController {
UITableView *tableView;
}
#property (nonatomic,retain) IBOutlet UITableView *tableView;
Then in your actual implementation, you can resize that declared tablview whenever you need to by doing:
CGRect tableFrame = tableView.frame;
//Decrease the height of table by height of ad banner
tableFrame.size.height = tableView.frame.size.height - adBannerView.frame.size.height;
tableView.frame = tableFrame;

How to position your custom UIView control derived from UITextField

I have extended UITextField so that I can use my custom myInputView. But I am having trouble positioning the myInputView to a desire location. Doesn't matter what i do to set the CGRect frame of myInputView it will position the height be at the bottom of the screen.
See Screenshot:
As you can see in the picture the reversed number pad is my custom inputView, but I want to be able to position it towards the middle of the screen.
MyTextField.h
#interface MyTextField : UITextField {
UIView *myInputView;
}
#property (nonatomic, retain) IBOutlet UIView *myInputView;
#end
MyTextField.m
#implementation MyTextField
#synthesize myInputView;
- (UIView *)inputView {
NSLog(#"Return inputView");
CGRect frame = CGRectMake(0, 200, 320, 215);
[myInputView setFrame:frame];
return myInputView;
}
- (void)dealloc {
[super dealloc];
[myInputView release];
}
#end
You might want to consider NOT implementing this in terms of an input view. Setting the input view lets the system treat it like it treats the keyboard. You DON'T get to set the frame, only the height. I would recommend getting rid of the UITextField, and replacing it with a UILabel with a UIButton over it. Add your custom input view to the main view, and position it offscreen. When the button is pressed, animate your custom input view back on screen. When the user makes inputs, just update the label. Don't worry about first responder or the UITextField.inputView at all.

How To Create a Custom UITableViewCell With Embedded Picture That Forces Other Table Rows Off Screen

Ey guys, so I want to create a grouped table view which has the first row of the first section be a large image(take up 3/4ths of the screen). I want the other section and table rows to be just visible below this large picture.
So I have created this custom cell that is extremely large, to hold this picture. It's dimensions are 320(W) x 340(H) pixels. Image's dimensions: 320(W) x 340(H) along with X:-10 Y:-11. Here is the code for the header part of my custom cell class:
#import <UIKit/UIKit.h>
#interface MainViewHeaderCell : UITableViewCell {
UILabel *cellLabel;
UIImageView *cellImage;
}
#property (nonatomic, retain) IBOutlet UILabel *cellLabel;
#property (nonatomic, retain) IBOutlet UIImageView *cellImage;
#end
I specified the dimensions and customized my cell in Interface Builder. I connected the proper outlets and build and run, but the custom cell I made doesn't take up 3/4ths of the screen like the image does, resulting in my image going over the next section and next rows of my table. It seems that the custom cell only gets big enough to not force any other rows off the screen, thus the reason for the image overlapping the table rows.
Do you guys have any ideas of what I can do to remedy this problem?
Sounds like you've only set the height of the cell in IB.
Make sure you've also implemented heightForRowAtIndexPath:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ((indexPath.section == 0) && (indexPath.row == 0))
return 340.0;
else
return 44.0;
}