How to load data in tableView
Hi I ha开发者_运维百科ve following code where i am trying to add UITableView on UIAlertView for which i have subclassed UIAlertView in UIAlertTableView.
#import "UIAlertTableView.h"
#define kTablePadding 8.0f
@interface UIAlertView (private)
- (void)layoutAnimated:(BOOL)fp8;
@end
@implementation UIAlertTableView
@synthesize dataSource;
@synthesize tableDelegate;
@synthesize tableHeight;
@synthesize tableView;
- (void)layoutAnimated:(BOOL)fp8 {
[super layoutAnimated:fp8];
[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y - tableExtHeight/2, self.frame.size.width, self.frame.size.height + tableExtHeight)];
// We get the lowest non-control view (i.e. Labels) so we can place the table view just below
UIView *lowestView;
int i = 0;
while (![[self.subviews objectAtIndex:i] isKindOfClass:[UIControl class]]) {
lowestView = [self.subviews objectAtIndex:i];
i++;
}
CGFloat tableWidth = 262.0f;
tableView.frame = CGRectMake(11.0f, lowestView.frame.origin.y + lowestView.frame.size.height + 2 * kTablePadding, tableWidth, tableHeight);
for (UIView *sv in self.subviews) {
// Move all Controls down
if ([sv isKindOfClass:[UIControl class]]) {
sv.frame = CGRectMake(sv.frame.origin.x, sv.frame.origin.y + tableExtHeight, sv.frame.size.width, sv.frame.size.height);
}
}
}
- (void)show{
[self prepare];
[self.tableView reloadData];
[super show];
}
- (void)prepare {
if (tableHeight == 0) {
tableHeight = 150.0f;
}
tableExtHeight = tableHeight + 2 * kTablePadding;
tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 0.0f, 0.0f) style:UITableViewStyleGrouped];
tableView.delegate = tableDelegate;
tableView.dataSource = dataSource;
[self insertSubview:tableView atIndex:0];
[self setNeedsLayout];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 10;
}
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
- (void)dealloc {
[tableView release];
[super dealloc];
}
@end
Now i want to load this tableView from data by calling reloadData in 'show' method but it is not calling delegate methods written in the class.
Also, i am showing the code of other class from where i am showing the alert.
- (void) showEsign{
//IRPSaveRepairResponseDO *saveRepairDO = [[[[IRPSessionCache sharedInstance] currentSessionObject] dataModel] saveRepairDetails];
IRPDataModel *dataModel = [[[IRPSessionCache sharedInstance] currentSessionObject] dataModel];
IRPProductDetailsDO *prodDO = [dataModel productDetailsDO];
//IRMLegalDocumentDO *legalDocDO = [dataModel legalDocDO];
NSMutableArray *printLanguageArray = [prodDO languageOptionsDisplayArray];
if ([printLanguageArray count] == 1) {
DLog(@"prodDO.defaultLanguageDescription: %@", prodDO.defaultLanguage);
[prodDO setUserSelectedLanguageForEsign:prodDO.defaultLanguage];
UIAlertTableView *alert = [[UIAlertTableView alloc] initWithTitle:@"Select language"
message:@"Concierge"
delegate:self
cancelButtonTitle:kCancel
otherButtonTitles:kNext, nil];
alert.tableDelegate = self;
alert.dataSource = self;
alert.tableHeight = 120;
[alert.tableView reloadData];
[alert show];
}
}
I want to load this tableView with one array.
This makes my brain hurt.
I'm not sure where you are initilizining your table view. Perhaps it is outside of your UIAlertView Subclass. My guess is the delegat/datasource is not set propetly. You may want to add something like this:
-(void) setTableView:(UITableView *)newTableView {
[tableView release];
tableView = [newTableView retain];
tableview.delegate = self;
tableView.dataSource = self;
}
But, then again, I'm drunk so I'm sorry if I'm am not understanding.
精彩评论