Reputation: 125
I need to use two tableview in a view. Also i need to create these tables with custom cells.
I tried something but i could not see even simple string in my table's cell.
What's wrong here?
Here is my updated code;
I have still problems, i am taking invalid argument exception [LastVisitOrder superview]: unrecognized selector sent to instance .Since i have changed uiview to uiview controller.
- (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
Upvotes: 0
Views: 317
Reputation: 1303
This is an elegant way to do that I use all the time.. Here's only working on create multiples custom cells, there aren't any code for calculate the height of the cells.
-(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;
}
Upvotes: 0
Reputation: 408
Use cell = [[[NSBundle mainBundle] loadNibNamed:@"VisitDateCell" owner:self options:nil] objectAtIndex:0];
Instead of cell = [[[VisitDateCell alloc] initWithFrame:CGRectZero] autorelease];
Then use cell.textLabel.text = @"YOUR_TEXT";
UPDATE!
For having access to your variable date you need to create it global in VisitDateCell.h
.Like:
@property (nonatomic, strong) UILabel *date;
Then it your TableView to achieve the access use:
(VisitDateCell*)cell.date = @"YOUR TEXT";
You don't need in your custom method setText. Just use this code in cellForRows
.
Hope it will help!
Upvotes: 0
Reputation: 80265
In your datasource
methods you need to distinguish between the two tables.
//cellForRowAtIndexPath
if (tableView == medSalesTable) {
// configure the first table
}
else {
// configure the second table
// use a different cell identifier
}
Make sure you do this also in numberOfRowsInSection
, and numberOfSectionsInTableView
if necessary. This assumes that you set both table views datasource
property to the controller.
Upvotes: 1