Set UITableView Delegate and DataSource

后端 未结 5 1532
生来不讨喜
生来不讨喜 2020-12-06 01:29

This is my problem: I have this small UITableView in my storyboard:\"enter

<
5条回答
  •  失恋的感觉
    2020-12-06 01:55

    rickster is right. But I guess you need to use a strong qualifier for your property since at the end of your viewDidLoad method the object will be deallocated anyway.

    @property (strong,nonatomic) SmallTable *delegate;
    
    // inside viewDidload
    
    [super viewDidLoad];
    self.delegate = [[SmallTable alloc] init];    
    [self.myTable setDelegate:myTableDelegate];
    [self.myTable setDataSource:myTableDelegate];
    

    But is there any reason to use a separated object (data source and delegate) for your table? Why don't you set SmallViewController as both the source and the delegate for your table?

    In addition you are not creating the cell in the correct way. These lines do nothing:

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    // Configure the cell...
    cell.textLabel.text = @"Hello there!";
    

    dequeueReusableCellWithIdentifier simply retrieves from the table "cache" a cell that has already created and that can be reused (this to avoid memory consumption) but you haven't created any.

    Where are you doing alloc-init? Do this instead:

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(!cell) {
        cell = // alloc-init here
    }
    // Configure the cell...
    cell.textLabel.text = @"Hello there!";
    

    Furthermore say to numberOfSectionsInTableView to return 1 instead of 0:

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        // Return the number of sections.
        return 1;
    }
    

提交回复
热议问题