2 UITableView具有不同的自定义单元格

时间:2013-08-02 06:27:22

标签: ios uitableview custom-cell

我需要在视图中使用两个tableview。此外,我需要使用自定义单元格创建这些表。

我尝试了一些东西,但我在桌子的单元格中看不到简单的字符串。

这里有什么问题?

这是我更新的代码;

我还有问题,我正在使用无效参数异常[LastVisitOrder superview]:无法识别的选择器发送到实例。因为我已将uiview更改为uiview控制器。

- (id)initWithFrame:(CGRect)frame
 {
self.view = [super initWithFrame:frame];

if (self) {


    self.view.frame = CGRectMake(0, 0, 1024, 768);


    [self.view setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.8]];




    UIView *popup = [[UIView alloc]initWithFrame:CGRectMake((self.view.frame.size.width-860)/2,(self.view.frame.size.height-570)/2, 860, 570)];

    [popup setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"popup_bckgrnd"]]];

    [self.view addSubview:popup];


    UILabel *customerName = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, 300, 30)];
    [customerName setBackgroundColor:[UIColor clearColor]];
    [customerName setText:@"Beşiktaş Eczanesi"];
    [customerName setFont:[UIFont fontWithName:@"Arial-BoldMT" size:18]];

    [popup addSubview:customerName];


    UILabel *customerDetail = [[UILabel alloc]initWithFrame:CGRectMake(50, 70, 300, 30)];
    [customerDetail setBackgroundColor:[UIColor clearColor]];
    [customerDetail setText:@"Tel: 231 213 23 23 Bla bla cad. Bla bla Sok. Bla bla Apt. No:Bla Blastan/Bistanbul"];
    [customerDetail setFont:[UIFont fontWithName:@"Arial" size:14]];

    [popup addSubview:customerDetail];


    UIButton *close = [[UIButton alloc]initWithFrame:CGRectMake(780, 65, 19, 19)];

    [close setBackgroundImage:[UIImage imageNamed:@"kapat"] forState:UIControlStateNormal];

    [close addTarget:self action:@selector(closePopUp:) forControlEvents:UIControlEventTouchUpInside];

    [popup addSubview:close];





    UIView *titleLine = [[UIView alloc]initWithFrame:CGRectMake(35, 100, 790, 2)];

    [titleLine setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"baslik_cizgi"]]];

    [popup addSubview:titleLine];


    dateTable = [[UITableView alloc]initWithFrame:CGRectMake(48.5, 165, 200, 345)];

    dateTable.layer.cornerRadius = 10;

    [dateTable setBackgroundColor:[UIColor clearColor]];

    [popup addSubview:dateTable];

    dateTable.delegate=self;

    dateTable.dataSource=self;


    UIImageView *visitDatesLabel = [[UIImageView alloc]initWithFrame:CGRectMake(70, 122, 148, 30)];

    [visitDatesLabel setImage:[UIImage imageNamed:@"en_son_ziyaret"]];

    [popup addSubview:visitDatesLabel];

    UIImageView *line = [[UIImageView alloc]initWithFrame:CGRectMake(49.5, 160, 200, 2)];

    [line setImage:[UIImage imageNamed:@"ust_cizgi"]];

    [popup addSubview:line];

    UIImageView *line2 = [[UIImageView alloc]initWithFrame:CGRectMake(270.5, 160, 540, 2)];

    [line2 setImage:[UIImage imageNamed:@"ust_cizgi"]];

    [popup addSubview:line2];

    UIImageView *productsDatesLabel = [[UIImageView alloc]initWithFrame:CGRectMake(300, 122, 102, 29)];

    [productsDatesLabel setImage:[UIImage imageNamed:@"urunler"]];

    [popup addSubview:productsDatesLabel];

    UIImageView *verticalLine = [[UIImageView alloc]initWithFrame:CGRectMake(430, 115, 2, 45)];

    [verticalLine setImage:[UIImage imageNamed:@"dikey_cizgi"]];

    [popup addSubview:verticalLine];

    UILabel *firstMonth = [[UILabel alloc]initWithFrame:CGRectMake(455, 126, 148, 30)];

    [firstMonth setBackgroundColor:[UIColor clearColor]];

    [firstMonth setText:@"OCAK"];

    [firstMonth setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];

    [firstMonth setTextColor:[UIColor grayColor]];

    [popup addSubview:firstMonth];


    UILabel *secondMonth = [[UILabel alloc]initWithFrame:CGRectMake(455+75, 126, 148, 30)];

    [secondMonth setBackgroundColor:[UIColor clearColor]];

    [secondMonth setText:@"ŞUBAT"];

    [secondMonth setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];

    [secondMonth setTextColor:[UIColor grayColor]];

    [popup addSubview:secondMonth];

    UILabel *thirdMonth = [[UILabel alloc]initWithFrame:CGRectMake(455+75+75, 126, 148, 30)];

    [thirdMonth setBackgroundColor:[UIColor clearColor]];

    [thirdMonth setText:@"MART"];

    [thirdMonth setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];

    [thirdMonth setTextColor:[UIColor grayColor]];

    [popup addSubview:thirdMonth];

    UILabel *rangeMonth = [[UILabel alloc]initWithFrame:CGRectMake(455+75+75+100, 126, 148, 30)];

    [rangeMonth setBackgroundColor:[UIColor clearColor]];

    [rangeMonth setText:@"OCAK-MART"];

    [rangeMonth setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];

    [rangeMonth setTextColor:[UIColor grayColor]];

    [popup addSubview:rangeMonth];


    UIImageView *verticalLine2 = [[UIImageView alloc]initWithFrame:CGRectMake(510, 115, 2, 45)];

    [verticalLine2 setImage:[UIImage imageNamed:@"dikey_cizgi"]];

    [popup addSubview:verticalLine2];

    UIImageView *verticalLine3 = [[UIImageView alloc]initWithFrame:CGRectMake(590, 115, 2, 45)];

    [verticalLine3 setImage:[UIImage imageNamed:@"dikey_cizgi"]];

    [popup addSubview:verticalLine3];

    UIImageView *verticalLine4 = [[UIImageView alloc]initWithFrame:CGRectMake(670, 115, 2, 45)];

    [verticalLine4 setImage:[UIImage imageNamed:@"dikey_cizgi"]];

    [popup addSubview:verticalLine4];


    medSalesTable = [[UITableView alloc]initWithFrame:CGRectMake(270.5, 165, 540, 345)];

    medSalesTable.layer.cornerRadius = 10;

    [medSalesTable setBackgroundColor:[UIColor clearColor]];


    [popup addSubview:medSalesTable];

    medSalesTable.delegate=self;

    medSalesTable.dataSource=self;           
}
return self;
 }

-(void) closePopUp:(id)sender{

[self.view removeFromSuperview];

}

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 5;      
}

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{     的NSLog(@ “的cellForRowAtIndexPath”);

if (tableView == dateTable)
{
    static NSString *CellIdentifier = @"VisitDateCell";


    VisitDateCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[VisitDateCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [cell.lastVisit setText:@"fucker"];

    return cell;
}

else if(tableView == medSalesTable){
    static NSString *CellIdentifier2 = @"OrdersCell";


    OrdersCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

    if (cell == nil) {
        cell = [[OrdersCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
    }

    [cell.textLabel setText:@"fucker"];

    return cell;
}

}
@end

3 个答案:

答案 0 :(得分:1)

datasource方法中,您需要区分这两个表。

//cellForRowAtIndexPath

if (tableView == medSalesTable) {
   // configure the first table
}
else {
   // configure the second table
   // use a different cell identifier
}

请确保您也在numberOfRowsInSectionnumberOfSectionsInTableView中执行此操作。这假设您将两个表视图datasource属性设置为控制器。

答案 1 :(得分:0)

使用cell = [[[NSBundle mainBundle] loadNibNamed:@"VisitDateCell" owner:self options:nil] objectAtIndex:0];

而不是cell = [[[VisitDateCell alloc] initWithFrame:CGRectZero] autorelease];

然后使用cell.textLabel.text = @"YOUR_TEXT";

<强>更新<!/强>

要访问您的变量日期,您需要在VisitDateCell.h中创建全局变量。喜欢: @property (nonatomic, strong) UILabel *date;

然后你的TableView实现访问使用: (VisitDateCell*)cell.date = @"YOUR TEXT";

您的自定义方法setText不需要。只需在cellForRows

中使用此代码即可

希望它会有所帮助!

答案 2 :(得分:0)

这是我一直使用的优雅方式.. 这里只处理创建多个自定义单元格,没有任何代码可用于计算单元格的高度。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    /*
       Call a function to create all custom cells.
       Send the tableview and the indexPath to this function.
       So, your code will be clean and easy to read an maintenance =D
       DON'T forget to change the height of each cell
    */
    if (indexPath.row < 3)
        return [self createACustomCell1:tableView indexPath:indexPath];
    else
        return [self createACustomCell2:tableView indexPath:indexPath];

}


//*************
//  Create CUSTOM CELL 2
//*************
-(UITableViewCell *)createACustomCell1:(UITableView *)anTableView indexPath:(NSIndexPath *)indexPath{
    static NSString *CUSTOMCELL_1  = @"CUSTOMCELL_1";

    CustomCell_1 *cell = [anTableView dequeueReusableCellWithIdentifier:CUSTOMCELL_1];
    if (!cell){
    [anTableView registerNib:[UINib nibWithNibName:CUSTOMCELL_1
                                          bundle:nil] forCellReuseIdentifier:CUSTOMCELL_1];
        cell = [anTableView dequeueReusableCellWithIdentifier:CUSTOMCELL_1];
    }

    // Cell customization above 
    return cell;
}


//*************
//  Create CUSTOM CELL 2
//*************
-(UITableViewCell *)createACustomCell2:(UITableView *)anTableView indexPath:(NSIndexPath *)indexPath{
    static NSString *CUSTOMCELL_2  = @"CUSTOMCELL_2";

    CustomCell_2 *cell = [anTableView dequeueReusableCellWithIdentifier:CUSTOMCELL_2];
    if (!cell){
    [anTableView registerNib:[UINib nibWithNibName:CUSTOMCELL_2
                                          bundle:nil] forCellReuseIdentifier:CUSTOMCELL_2];
        cell = [anTableView dequeueReusableCellWithIdentifier:CUSTOMCELL_2];
    }

    // Cell customization above


    return cell;
}