我假设您不想使用部分?您只是希望它们都在同一个部分中吗?
如果是这种情况,您可能需要进行一些预处理以将数组拆分为您的子集(在 viewDidLoad 或控制器生命周期开始时的其他地方):
self.managerArray = [AnyObject]() // you'll need a property to hold onto this new data source
self.employeeArray = [AnyObject]()
for employee: Employee in self.allEmployees {
// assume allEmployees is the alphabetical array
if employee.isManager {
// your condition for determining the subset
managerArray.append(employee)
}
else {
employeeArray.append(employee)
}
}
因为数组已经按字母顺序排列,所以也应该按字母顺序填充子数组(append 只是添加到下一个索引)。
然后,为了确保表格在以这种方式处理之前不会加载值,您需要这样做
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if self.employeeArray && self.managerArray {
return self.employeeArray.count + self.managerArray.count
}
return 0
}
然后,您只需从self.managerArray 填充单元格,然后再移至self.employeeArray。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row < self.managerArray.count {
var manager: Employee = self.managerArray[indexPath.row]
// populate your cell info here
}
else {
// else we've already filled in manager's time to start on employees
// subtract the number of managers from the indexPath to start at beginning of employeeArray
var employee: Employee = self.employeeArray[indexPath.row - self.managerArray.count]
// populate cell here
}
return cell
}
然后当你搜索的时候,你可以像往常一样在原来的self.allEmployees数组上搜索。