У меня есть 2 таблицы в одном контроллере представления: «studentsTable» и «professorsTable». Я хотел создать стандартную головную ячейку для обеих таблиц. Я подклассифицировал UItableViewCell и создал тип headCell. Затем назначается один headCell для обоих, если indexPath.row == 0. Все прошло гладко, однако есть одна проблема. Всякий раз, когда я нажимаю кнопку «addButton», я хочу, чтобы функция addStudent вызывалась, если она была на «studentsTable» и «addProfessor», если она была на «ProfessorsTable». Очевидно, я могу просто создать два headCells, по одному для каждой из таблиц, но мне интересно, есть ли более профессиональный способ справиться с этим, написав меньше кода. Вот код, который, я полагаю, может работать, если задано правильное условие «если». Заранее спасиборазличные методы на одной стандартной головкеКоллекция в func tableView (tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var actionType:String=String()
if(/*WHAT CONDITION SHOULD I PUT?*/)
{actionType="addStudent"}
else
{actionType="addProfessor"}
if(indexPath.row==0)
{
var theHeadcell : headCell = tableView.dequeueReusableCellWithIdentifier("headCell") as headCell
// cell setup
if(actionType != "")
{
addButton.addTarget(self, action: NSSelectorFromString(actionType), forControlEvents: UIControlEvents.TouchUpInside)
}
return theHeadCell
}
else
{
if (tableView==self.studentsTable)
{
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("studentsCell") as UITableViewCell
// cell setup
return cell
}
else
{
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("ProfessorsCell") as UITableViewCell
// cell setup
return Cell
}
}
}
спасибо много. Я перепутал что-то в коде, поэтому ваш ответ не работал раньше. Я исправил это сейчас. Спасибо –
@TikoHarutyunyan Я думаю, вы можете попытаться судить по методу действия UIbutton, используя 'sender.superview.superview' (который должен быть tableView) – Sugar