2015-12-09 42 views
0

我想在我的應用程序如何獲取原型單元格的nibWithNibName?

當我做自定義單元格與XIB文件是好的使用方法registerNib: forCellReuseIdentifier:。 (例如:SwitchTableViewCell2.xib) 因爲文件名是xib名稱。

工作以及代碼:

[self.tableView registerNib:[UINib nibWithNibName:@"SwitchTableViewCell2" bundle:nil] forCellReuseIdentifier:@"xibcell"]; 

,但是當我在mainStoryboard取得的實現代碼如下prototypecells沒有工作。

如何在故事板上獲取prototypecell的xibname?

任何人都可以測試此鏈接:github.com/Kernelzero/test_nav


附加的形象在這裏的文件

enter image description here

此控制器的名稱: 'PushSettingController'

此控制器的故事板ID: 'pushSetting'

property of tableViewController

enter image description here

回答

1

如果您使用的原型細胞,標識符名稱必須相同dequeueReusableCellWithIdentifier名

注:如果您使用的原型細胞,您不需要註冊該單元格。因爲原型單元格不是CustomCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"switchcell"]; 
    if(cell == nil) 
    { 
    cell =[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    cell.textLabel.text = @""; 
    return cell; 
} 

但是如果你使用自定義單元格,請按照下列步驟

1.in viewDidLoad中必須註冊自定義單元格中的cellForRowAtIndexPath

UINib *cellNib = [UINib nibWithNibName:@"SwitchTableViewCell2" bundle:[NSBundle mainBundle]]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"switchcell"]; 

2.OR你可以寫下面的代碼一樣這

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *[email protected]"switchcell"; 
    SwitchTableViewCell2 *cell=(SwitchTableViewCell2*)[tableView dequeueReusableCellWithIdentifier:customTableIdentifier]; 
    if (cell==nil) 
    { 
    NSArray *nibs=[[NSBundle mainBundle]loadNibNamed:@"SwitchTableViewCell2" owner:self options:nil]; 
    cell=[nibs objectAtIndex:0]; 
    } 
    cell.yourSwitchTableViewCell2Label.text = @""; 
    cell.yourSwitchTableViewCell2TextField.text = @""; 
    cell.yourSwitchTableViewCell2Button.text = @""; 
    return cell; 
} 
+0

類型'CustomCell'發生錯誤。我的問題是這樣的。如何獲取名稱,而不是CustomCell – Kernelzero

+0

我更新了我的答案 – user3182143

+0

我嘗試controllerName,storyboard_id但我無法得到滿意的結果 – Kernelzero

0

採取registerNib叫出用故事板的時候。如果您已正確設置故事板,則原型單元格已註冊到tableView。

+0

我只是上傳截圖。什麼是nibname? 標識符和類名不是。 – Kernelzero

0

沒有必要從筆尖加載它。呼叫:

Objective-C的

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"switchcell]; 

斯威夫特

let cell = tableView.dequeueReusableCellWithIdentifier("switchcell") 
+0

我以前試過這個代碼。但細胞沒有顯示。 – Kernelzero