按数字

时间:2015-10-03 12:35:39

标签: ios swift uitableview

我正在使用UITableView部分来构建索引表,假设我有一个包含500个字符串数据的数组。现在我需要索引表格,以便轻松滚动1,50,100,150,200等等,直到500.所以当我滚动到50时,我会转到indexPath.row 50.

我真的无法实现它,我尝试了以下内容:

@IBOutlet weak var mytableView: UITableView!

var tableData = [String]()
var indexOfNumbers = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    tableData = [

    // 500 lines of string array of different starting letter

    ]

    let indexNumbers = "0 50 100 150 200 250 300 350 400 450 500"
    indexOfNumbers = indexNumbers.componentsSeparatedByString(" ")


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return tableData.count
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 

    // Configure the cell...
    cell.textLabel?.text = tableData[indexPath.section]

    return cell
}



func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}


func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {

    return indexOfNumbers
}

func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
    let temp = indexOfNumbers as NSArray
    return temp.indexOfObject(title)
}

1 个答案:

答案 0 :(得分:2)

我看到你有11节,每节1排。您可以滚动到每一行(根据您的代码,该部分的唯一行)。如果你想做你在问题中解释的内容,请在50-50个单元格中分隔tableData(以数组方式排列)。在每个部分加载50个单元格,删除最后一部分(第500个)。

您也需要解决此问题,因为componentsSeparatedByString会返回一组分离的组件。

var indexOfNumbers = [NSArray]() 
let indexes = "0 50 100 150 200 250 300 350 400 450 500" 
indexOfNumbers = indexes.componentsSeparatedByString(" ")

您可以使用subarrayWithRange类的NSArray方法将数组分开。 目标C中的代码。

NSMutableArray *mutA=[[NSMutableArray alloc]init];
for (int i=0; i<10; i++)
{
    NSArray *halfArray;
    NSRange theRange;

    theRange.location = i*50;
    theRange.length = [mapCat count] / 10;

    halfArray = [mapCat subarrayWithRange:theRange];
    [mutA addObject:halfArray];
}