Creating a UITableView Programmatically

后端 未结 9 2116
梦谈多话
梦谈多话 2021-01-31 14:26

I have an application in Xcode 4.6 which uses storyboards. I added a UITableView to a view controller class, which worked as expected. However, when I tried deleting the UITable

相关标签:
9条回答
  • 2021-01-31 15:00

    sample table

     #import "StartreserveViewController.h"
     #import "CollectionViewController.h"
     #import "TableViewCell1.h"
    @interface StartreserveViewController ()
    
    
    {
    NSArray *name;
    NSArray *images;
    NSInteger selectindex;
    
    }
    
    @end
    
    @implementation StartreserveViewController
    
    - (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.view.backgroundColor = [UIColor blueColor];
    _startReservetable.backgroundColor = [UIColor blueColor];
    
    
    name = [[NSArray alloc]initWithObjects:@"Mobiles",@"Costumes",@"Shoes", 
    nil];
    images = [[NSArray 
     alloc]initWithObjects:@"mobilestitle.jpg",@"costumetitle.jpeg", 
     @"shoestitle.png",nil];
    
    
    
      }
    
     - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }
    

    pragma mark - UiTableview Datasource

     -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
     {
    return 1;
     }
    
     -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:
     (NSInteger)section
     {
    return 3;
     }
    
     - (UITableViewCell *)tableView:(UITableView *)tableView 
      cellForRowAtIndexPath:(NSIndexPath *)indexPath
     {
    
    
    static NSString *cellId = @"tableview";
    
    TableViewCell1  *cell =[tableView dequeueReusableCellWithIdentifier:cellId];
    
    
    cell.cellTxt .text = [name objectAtIndex:indexPath.row];
    
    cell.cellImg.image = [UIImage imageNamed:[images 
    objectAtIndex:indexPath.row]];
    
    return cell;
    
    
    
     }
    
    
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
    (NSIndexPath *)indexPath
     {
    selectindex = indexPath.row;
    [self performSegueWithIdentifier:@"second" sender:self];
    }
    
    
    
       #pragma mark - Navigation
    
     // In a storyboard-based application, you will often want to do a little     
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    
    if ([segue.identifier isEqualToString:@"second"])
    
      {
        CollectionViewController *obj = segue.destinationViewController;
               obj.receivename = [name objectAtIndex:selectindex];
    
      }
    
    
    
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }
    
     @end
    

    .h

    #import <UIKit/UIKit.h>
    
    @interface StartreserveViewController :      
    UIViewController<UITableViewDelegate,UITableViewDataSource>    
    @property (strong, nonatomic) IBOutlet UITableView *startReservetable;
    
     @end
    
    0 讨论(0)
  • 2021-01-31 15:01
    #import "ViewController.h"
    
    @interface ViewController ()
    
    {
    
        NSMutableArray *name;
    
    }
    
    @end
    
    
    - (void)viewDidLoad 
    
    {
    
        [super viewDidLoad];
        name=[[NSMutableArray alloc]init];
        [name addObject:@"ronak"];
        [name addObject:@"vibha"];
        [name addObject:@"shivani"];
        [name addObject:@"nidhi"];
        [name addObject:@"firdosh"];
        [name addObject:@"himani"];
    
        _tableview_outlet.delegate = self;
        _tableview_outlet.dataSource = self;
    
    }
    
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    
    {
    
    return [name count];
    
    }
    
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
    {
    
        static NSString *simpleTableIdentifier = @"cell";
    
        UITableViewCell *cell = [tableView       dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }
    
        cell.textLabel.text = [name objectAtIndex:indexPath.row];
        return cell;
    }
    
    0 讨论(0)
  • 2021-01-31 15:02
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
        tableView.delegate = self;
        tableView.dataSource = self;
    
        tableView.backgroundColor = [UIColor grayColor];
    
        // add to superview
        [self.view addSubview:tableView];
    }
    
    #pragma mark - UITableViewDataSource
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:    (NSInteger)section
    {
        return 1;
    }
    
    // the cell will be returned to the tableView
    - (UITableViewCell *)tableView:(UITableView *)theTableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellIdentifier = @"HistoryCell";
    
        // Similar to UITableViewCell, but 
        UITableViewCell *cell = (UITableViewCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        cell.descriptionLabel.text = @"Testing";
        return cell;
    }
    
    0 讨论(0)
  • 2021-01-31 15:02

    Creating a tableview using tableViewController .

    import UIKit
    
    class TableViewController: UITableViewController
    {
        let tableViewModel = TableViewModel()
        var product: [String] = []
        var price: [String] = []
        override func viewDidLoad()
        {
            super.viewDidLoad()
            self.tableView.contentInset = UIEdgeInsetsMake( 20, 20 , 0, 0)
            let priceProductDetails = tableViewModel.dataProvider()
    
            for (key, value) in priceProductDetails
            {
                product.append(key)
                price.append(value)
            }
        }
    
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
        {
            return product.count
        }
    
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
        {
            let cell = UITableViewCell(style: .Value1, reuseIdentifier: "UITableViewCell")
            cell.textLabel?.text = product[indexPath.row]
            cell.detailTextLabel?.text = price[indexPath.row]
            return cell
        }
    
        override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
        {
            print("You tapped cell number \(indexPath.row).")
        }
    }
    
    0 讨论(0)
  • 2021-01-31 15:07

    You might be do that its works 100% .

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // init table view
        tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    
        // must set delegate & dataSource, otherwise the the table will be empty and not responsive
        tableView.delegate = self;
        tableView.dataSource = self;
    
        tableView.backgroundColor = [UIColor cyanColor];
    
        // add to canvas
        [self.view addSubview:tableView];
    }
    
    #pragma mark - UITableViewDataSource
    // number of section(s), now I assume there is only 1 section
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView
    {
        return 1;
    }
    
    // number of row in the section, I assume there is only 1 row
    - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section
    {
        return 1;
    }
    
    // the cell will be returned to the tableView
    - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellIdentifier = @"HistoryCell";
    
        // Similar to UITableViewCell, but 
        JSCustomCell *cell = (JSCustomCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil) {
            cell = [[JSCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        // Just want to test, so I hardcode the data
        cell.descriptionLabel.text = @"Testing";
    
        return cell;
    }
    
    #pragma mark - UITableViewDelegate
    // when user tap the row, what action you want to perform
    - (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSLog(@"selected %d row", indexPath.row);
    }
    
    @end
    
    0 讨论(0)
  • 2021-01-31 15:08
    - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section
    {
        return 1;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)theTableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellIdentifier = @"HistoryCell";
    
        UITableViewCell *cell = (UITableViewCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        cell.descriptionLabel.text = @"Testing";
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        //Code for selection.
    }
    

    these are UITableView delegate methods.

    0 讨论(0)
提交回复
热议问题