objektif-c - penciptaan tableviewcell
仅有的幸福
仅有的幸福 2017-05-02 09:25:41
0
1
500

jika (!sel) {

cell = [[AddressTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:addressIdentifier];

}
Kenapa kita perlu menambah penghakiman, tulis ini, bila penghakiman ini akan dibuat

仅有的幸福
仅有的幸福

membalas semua(1)
刘奇

Jika anda tidak menilai, yang baharu akan dibuat setiap kali, kerana anda mempunyai alloc di sini.
Biasanya terdapat baris sebelum kod ini:

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

Barisan ini adalah untuk mendapatkan sel yang digunakan semula Jika ia boleh diambil semula, sel itu mempunyai memori dan boleh digunakan semula secara langsung.
Selain itu, anda juga boleh menggunakan kaedah pendaftaran:

-(void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
-(void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

Jika anda mendaftar, anda tidak perlu menilai. Secara umumnya, ia digunakan seperti ini:

[self.tableView registerNib:[UINib nibWithNibClass:className] forCellReuseIdentifier:reuseId];
//或者
[self.tableView registerClass:className forCellReuseIdentifier:reuseId];

Kemudian, kaedah tableView:cellForRowAtIndexPath: tidak memerlukan pertimbangan tambahan, dan boleh diambil terus:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SomeIdentifier"];
    //do something
    ...
    
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan