2013-08-02 2 views
0

Мне нужно использовать два вида таблицы в представлении. Также мне нужно создать эти таблицы с пользовательскими ячейками.2 UITableView с различными пользовательскими ячейками

Я пробовал что-то, но я не мог видеть даже простую строку в ячейке моей таблицы.

Что здесь не так?

Вот мой обновленный код;

У меня все еще проблемы, я принимаю неверное исключение аргумента [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 
+0

но я не мог получить доступ к «дате», как cell.date.text – erdemgc

+1

Есть несколько вещей, которые здесь не так, то первое в том, что LastVisitOrder вид и вид не должен быть источником данных для таблицы (предполагается, что вы когда-либо устанавливали источник данных - не так ли?). – rdelmar

+0

Должен ли он быть uiview-контроллером вместо uiview? – erdemgc

ответ

0

Использование cell = [[[NSBundle mainBundle] loadNibNamed:@"VisitDateCell" owner:self options:nil] objectAtIndex:0];

Вместо cell = [[[VisitDateCell alloc] initWithFrame:CGRectZero] autorelease];

Затем используйте cell.textLabel.text = @"YOUR_TEXT";

UPDATE!

Для получения доступа к вашей переменной даты вам нужно создать его глобальный VisitDateCell.h .like: @property (nonatomic, strong) UILabel *date;

Тогда ваш TableView добиться использования доступа: (VisitDateCell*)cell.date = @"YOUR TEXT";

Вам не нужно в вашем обычном методе setText. Просто используйте этот код в cellForRows.

Надеюсь, это поможет!

+0

Я сделал, но все равно нет разницы, ничего не отображается в таблице – erdemgc

+0

проверить мое обновление – user2545330

+0

Я обновил свой код – erdemgc

1

В ваших методах datasource вам необходимо провести различие между двумя таблицами.

//cellForRowAtIndexPath 

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

Убедитесь, что вы делаете это также в numberOfRowsInSection и numberOfSectionsInTableView в случае необходимости. Это предполагает, что вы устанавливаете свойство таблицы datasource для контроллера.

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; 
} 
Смежные вопросы