How to set up UITableView within a UIViewController created on a .xib file

前端 未结 3 780
一个人的身影
一个人的身影 2021-01-31 21:17

I have a class like this:

@interface ExerciseLogDetails : UIViewController {
         


        
3条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-31 21:25

    Several of the tips on this thread helped me create this. I am going to offer some more complete code files in order to help others as well:

    Step 1. Drag your UITableView onto your View Controller either in Storyboards or XIBs. In my example I am using a story board.

    Step 2: Open your ViewController (in my case its just DefaultViewController) and add the two delegates for the UITableView: UITableViewDelegate and UITableViewDataSource. Also add a simple data source for population and the UITableView IBOutlet.

    DefaultViewController.h

    #import 
    
    @interface DetailViewController : UIViewController 
    
    @property (strong, nonatomic) IBOutlet UITableView *tableView;
    @property (strong, nonatomic) NSMutableArray *newsArray;
    
    @end
    

    Step 3: Open your implementation file (DefaultViewController.m) and add the following:

    #import "DetailViewController.h"
    
    @interface DetailViewController ()
    - (void)configureView;
    @end
    
    @implementation DetailViewController
    
    @synthesize newsArray;
    @synthesize tableView;
    
    #pragma mark - Managing the detail item
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    
        [self configureView];
    }
    
    - (void)configureView
    {
        // Update the user interface for the detail item.
        self.newsArray = [[NSMutableArray alloc] initWithObjects:@"Hello World",@"Goodbye World", nil];
    }
    
    
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark UITableViewDelegate
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // typically you need know which item the user has selected.
        // this method allows you to keep track of the selection
    
    }
    
    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
               editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
        return UITableViewCellEditingStyleDelete;
    }
    
    // This will tell your UITableView how many rows you wish to have in each section.
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [self.newsArray count];
    }
    
    // This will tell your UITableView what data to put in which cells in your table.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifer = @"CellIdentifier";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer];
    
        // Using a cell identifier will allow your app to reuse cells as they come and go from the screen.
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifer];
        }
    
        // Deciding which data to put into this particular cell.
        // If it the first row, the data input will be "Data1" from the array.
        NSUInteger row = [indexPath row];
        cell.textLabel.text = [self.newsArray objectAtIndex:row];
    
        return cell;
    }
    
    @end
    

    Step 4: Goto your Storyboards or XIB and select your UITableView and drag the datasource and delegate outlets onto your DefaultViewController to wire them up. Also you will need to wire up the Referencing Outlet for the UITableView to your IBOutlet tableView object you created in your header file.

    Once this is finished you should be able to run it and the sample data will be in place.

    I hope this along with the other tips on this thread will help others setup a UITableView from scratch on a ViewController.

提交回复
热议问题