2015-07-02 2 views
0

У меня есть tableViewController с segmentedControl. Все работает отлично, данные отображаются, как предполагается, в каждом представлении таблицы, и я могу переключаться между каждым элементом управления сегментом.Пользовательские кнопки редактирования для сегментированных элементов управления TableViews

Я хотел бы добавить функцию Swipe Delete в каждый TablePontrolControl. Но я хочу, чтобы у Segment1 была 1 кнопка, а у сегмента Segment2 было 2 кнопки.

Ex:

Segment 1 
    Button: More 
Segment 2 
    Button: More 
    Button: Delete 

Как я могу это сделать, в данный момент я получаю пустое пространство на Segment1, что происходит сбой приложения при нажатии. Есть ли все-таки, чтобы скрыть это пустое пространство/кнопку от Segment1?

override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath  
    indexPath: NSIndexPath) -> UITableViewCellEditingStyle { 

    var table:UITableViewCellEditingStyle = UITableViewCellEditingStyle.None 

    switch (self.segmentControl.selectedSegmentIndex) { 
    case 0: 
     table = UITableViewCellEditingStyle.Delete 
    case 1: 
     table = UITableViewCellEditingStyle.Delete 
    default: 
     break 
    } 

    return table 

} 

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath 
indexPath: NSIndexPath) -> [AnyObject]? { 

    var moreRowAction = UITableViewRowAction() 
    var deleteRowAction = UITableViewRowAction() 

    switch (self.segmentControl.selectedSegmentIndex) { 
    case 0: 
     moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in 
      println("MORE•ACTION"); 
     }); 

    case 1: 
     moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in 
      println("MORE•ACTION"); 
     }); 
     moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0); 

     deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in 
      println("DELETE•ACTION"); 
     }); 
    default: 
     break 
    } 

    return [deleteRowAction, moreRowAction]; 
} 

ответ

1

Возвращение один UITableViewRowAction в случае 0, возвращают два UITableViewRowAction в случае 1, Попробуйте это

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    var moreRowAction = UITableViewRowAction() 
    var deleteRowAction = UITableViewRowAction() 

    switch (self.segmentControl.selectedSegmentIndex) { 
    case 0: 
     moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in 
      println("MORE•ACTION"); 
     }); 
     return [moreRowAction]; 
    case 1: 
     moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in 
      println("MORE•ACTION"); 
    }); 
     moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0); 

     deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in 
      println("DELETE•ACTION"); 
     }); 
     return [deleteRowAction, moreRowAction]; 
    default: 
     break 
    } 

    return [deleteRowAction, moreRowAction]; 
} 
+0

ничего себе, что было намного легче, чем я думал. благодаря :) –

Смежные вопросы