自定义 UITableView - iphone

Posted

技术标签:

【中文标题】自定义 UITableView - iphone【英文标题】:Custom UITableView - iphone 【发布时间】:2014-07-28 13:16:10 【问题描述】:

我使用了UITableView,并构建了customCellUITableView 连接到NavigationController

我希望单元格 1-3 使用 navigationBar(例如,单击单元格传递到下一个视图) 并且单元格 4-5 仍保留为可点击单元格(例如,我单击此单元格,单元格背景会发生变化)。

在故事板中,标识符等于Cell。 现在任何动作都会让我进入另一个视图,有人可以帮忙吗?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString * CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    

    return cell;

【问题讨论】:

你的问题不清楚。请详细说明您的问题、预期结果和要求的结果。 【参考方案1】:

在声明您的cellForRowAtIndexPath 时,请务必将您的自定义单元格添加为:

YourCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

如果您不需要自定义单元格,则将其保留为 UITableViewCell

使用didSelectCellAtIndexPath 方法进行操作:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

     NSString *segueIdentifier = [[NSString alloc]init];
     switch (indexPath.row) 
        case 0:
            segueIdentifier = @"segue1";
            break;
        case 1:
            segueIdentifier = @"segue2";
            break;
        case 2:
            segueIdentifier = @"segue3";
            break;

     if (indexPath.row != 3 && indexPath.row !=4) 
        [self performSegueWithIdentifier:segueIdentifier sender:self];
        [self dismissViewControllerAnimated:YES completion:nil];
     


【讨论】:

【参考方案2】:

您可以为此使用(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 方法。

在您的 tableviewcontroller 中实现此方法,并在此方法中执行以下操作。

如果您在 viewcontroller 中添加了 tableview,请执行以下操作 -

1) 在.h文件中添加代理@interface TestTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

2) 在(void)viewDidLoad() 方法中的.m 文件中添加 self.tableView.delegate=self; self.tableView.dataSource=self;

如果用户点击 1-3 个单元格调用[self performSegueWithIdentifier:SEGUE_SHOWDETAILS sender:self];in didSelectRowAtIndexPath 方法重定向到新页面

对于 4-5 个单元格,在 didSelectRowAtIndexPath 方法中更改单元格背景颜色。

【讨论】:

以上是关于自定义 UITableView - iphone的主要内容,如果未能解决你的问题,请参考以下文章

从自定义单元格返回 NSIndexPath ? (UITableView)

如何自定义UITableView的Header

自定义视图不适合 UItableview 中的标题

iOS 自定义 UITableView 单元格

UITableView - 自定义 UITableViewCell 中的自定义 selectedBackgroundView 选择时隐藏单元格分隔符

支持iOS11UITableView左滑删除自定义 - 实现多选项并使用自定义图片