在不使用UITableViewController的情况下重新排序UITableView



所以这就是我所拥有的(简化):

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
    }
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        if (indexPath.row == 0) {
            cell.textLabel.text = @"First";
        }else{
            cell.textLabel.text = [NSString stringWithFormat: @"%d", indexPath.row];
      }
      return cell;
    }

我需要做的是:

更改numberOfRowsInSection()以返回11,如果行为10,则更改cellForRowAtIndexPath()中的代码以设置cell.textLabel = @"Top Spot";

然后我想把"Top Spot"移到UITableView列表的顶部,然后放在"First"之前,就好像"TopSpot"一直是第0行,"First"一直是第一行一样。我不能在控制器中这样做,因为它已经在应用商店中发布了,更新会让用户报告现有记录的错误值。因此,就应用程序的其他部分而言,"Top Spot"实际上是第10行,只有表格的显示部分知道发生了什么。选择"Top Spot"的用户实际上会选择第10行,而不是第0行。

这可能吗?

感谢您的意见。

将数据存储到NSArray或NSMutableArray然后将其排列到您想要的任何顺序并且显示来自Array或Dictionary.it的数据。它将被安排为一个

你可以做的另一种方法是,你可以创建一个自定义类,并可以将特定的属性存储到中

比如

 @interface exampleClassName :NSObject 
{
 @property (nonatomic, strong) NSString * ex1;
 @ property (nonatomic, strong) NSString * ex2;
 @property (nonatomic, strong) NSString * ex3;
 @property (nonatomic) NSInteger arrange;
}

*然后根据您的需要创建.m实现文件。这是给你的阅读技巧。现在您创建了这个类的Object,并可以开始将对象存储到数组中

 exampleClassName *ex1=[exampleClassName alloc] init];
  ex1.arrange=1;
  ex1.ex1=@" ";
 ex1.ex2=@" ";
 ex1.ex3=@" ";
  NSMutableArray *array=[NSMutableArray alloc] initWithObjects:ex1,........];

现在,您可以根据对象"排列"属性来排列此NSMutable数组,该属性是一个整数,您可以基于特定的优先级为该排列属性赋予值。如果您想在顶部显示"Top Spot",则可以根据升序或降序排列赋予其排列属性值1。

希望这能帮助到你。

最新更新