开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜