2016-01-15 2 views
0

Я создал UITableView с ячейками, которые содержат довольно большое количество объектов UIView. Однако, когда я выбираю ячейку, она не кажется гладкой при запуске segue. Второе замечание состоит в том, что если я быстро дважды коснусь ячейки, он будет запускать сеанс дважды (дважды нажмите кнопку).UITableViewCell медленно реагирует на ответвление

Что может вызывать такое поведение? Я использую телефон в качестве тестовой среды, и все остальные приложения закрыты.

override func viewDidLoad() { 
    super.viewDidLoad() 

    //PickerView 
    self.pickerView.delegate = self 
    self.pickerView.dataSource = self 
    self.pickerView.interitemSpacing = 60 
    self.pickerView.backgroundColor = UIColor(hexString: "#1C1F27") 
    self.pickerView.textColor = UIColor(hexString: "#D8D8D8").colorWithAlphaComponent(0.4) 
    self.pickerView.highlightedTextColor = UIColor.whiteColor() 
    self.pickerView.font = UIFont(name: "MavenProRegular", size: 12)! 
    self.pickerView.highlightedFont = UIFont(name: "MavenProRegular", size: 12)! 
    self.pickerView.pickerViewStyle = .StyleFlat 
    self.pickerView.maskDisabled = false 
    self.pickerView.reloadData() 

    //Tableview 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
    self.tableView.delegate = self 
    self.tableView.dataSource = self 
    self.tableView.backgroundColor = UIColor.clearColor() 

    //ActivityIndicator 
    self.refreshControl = UIRefreshControl() 
    self.refreshControl.tintColor = UIColor.whiteColor().colorWithAlphaComponent(0.4) 
    self.refreshControl.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged) 
    self.tableView.addSubview(refreshControl) 
} 

//TABLEVIEW METHODS 
func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 140 
} 

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

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

    cell.backgroundColor = UIColor.clearColor() 
    cell.selectionStyle = UITableViewCellSelectionStyle.Default 

    let backgroundSelectionView = UIView(frame: cell.bounds) 
    backgroundSelectionView.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.05) 
    cell.selectedBackgroundView = backgroundSelectionView 

    return cell 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("CameraController", sender: self) 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
} 
+2

Возможно, ваш CameraController занимает немного больше времени для загрузки, попробуйте перевести его в обычный диспетчер просмотра и посмотрите, плавно ли он. – Surely

+0

, так что если это проблема, каково будет решение? помещать вещи в фоновый поток? –

+0

Это зависит от того, что вы пытаетесь сделать. В общем, я думаю, вы можете попытаться переместить свой код в viewDidLoad в viewDidAppear, если это не обязательно в viewDidLoad. – Surely

ответ

-1
let backgroundSelectionView = UIView(frame: cell.bounds) 

Вы можете поместить вид в файл ячейки. Поскольку tableViewCells повторно используются, как только они создали ячейку (с представлением), она не будет сгенерирована снова.

С другой стороны, то, что вы делаете, это каждый раз, когда вы деактивируете ячейку, вы инициализируете представление и назначаете его как поднаблючение ячейки, что означает, что вы выполняете дополнительную работу инициализации представления.

Итак, вы можете перейти в файл cell.m и добавить свойство для просмотра, которое вам нужно. Если вы используете раскадровку для tableview и cell, просто сделайте там IBOutlet. Если вы используете xib-файл, просто отправляйтесь туда и делайте там IBOutlet.

С другой стороны, я не знаю, что делает ваш контроллер просмотра камеры. Возможно, создание проблемы вызывает проблемы с производительностью. Вы можете предоставить больше кода на VC камеры.

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