iOS 中在一個xib中創建多個cell以及cell上button的點擊方法


在寫項目布局的時候會有這么一種情況

或者

這種頁面 是單一的頁面,別的地方也用不到,, 用xib寫的話  cell就需要注冊好幾個。看起來挺多的,實際上有種方法能不用創建那么多的xib。

那就是在一個xib中創建多個cell

 第一步創建

 

第二步  設置identifier

 

把每個cell 都設置成 相應的id之后

在tableView中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *identifier = @"";//對應xib中設置的identifier
    NSInteger index = 0; //xib中第幾個Cell
    switch (indexPath.row) {
            case 0:
            identifier = @"0";
            index = 0;
            break;
            case 1:
            identifier = @"1";
            index = 1;
            break;
            case 2:
            identifier = @"2";
            index = 2;
            break;
            
        default:
            break;
    }
    
    TestTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [[[NSBundle mainBundle] loadNibNamed:@"TestTableViewCell" owner:self options:nil] objectAtIndex:index];
    }
    return cell;
}

 注冊 cell 之后運行 沒bug之后  xib 創建多個cell就完成了

 

===============================華麗的分割線=======================================

這個操作完成之后 我們在cell上添加button

我們想做的操作是  點擊cell上的button 把button的title 打印出來。

其實有好多方法   通過屬性添加點擊事件 cell.button 或者 通過tag值找到button

還有一種在控制器里面很省代碼的方法

 

 在TestTableViewCell.h中  寫個代理

#import <UIKit/UIKit.h>
@protocol TestTableViewCellDelegate <NSObject>

- (void)testBtn:(UIButton*)btn;

@end
@interface TestTableViewCell : UITableViewCell
@property (nonatomic, weak)id <TestTableViewCellDelegate> testdelegate;

@end

  在TestTableViewCell.m中 加一個判斷

- (IBAction)textButton:(id)sender {
    
    if (self.testdelegate && [self.testdelegate respondsToSelector:@selector(testBtn:)]) {
        [self.testdelegate testBtn:sender];
    }
    
}

 接着在你的controller中 添加代理

  cell.testdelegate = self;

 實現方法

- (void)testBtn:(UIButton *)btn
{
    NSLog(@"%@", btn.titleLabel.text);
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM