2015-02-05 5 views
0

Я создал контроллер tableviewcontroller с динамической ячейкой прототипа. В этом представлении пользователь имеет возможность вводить обзор местоположения с помощью нажатия кнопки, а также может оценивать местоположение по шкале от 1 до 10 с помощью слайдера пользовательского интерфейса. Обзор выполняется с помощью UIAlertController в контроллере tableviewcontroller, но UISlider находится внутри самой ячейки. Я пытаюсь сохранить обе части данных в основные данные в tableviewcontroller. Но значение рейтинга UISlider недоступно в tableviewcontroller - есть ли способ ссылаться на него в виде таблицы из ячейки или мне нужно иметь две отдельные функции сохранения? Вот некоторые из моих кодов до сих пор - в контроллере tableview он не распознает переменную, назначенную значению UISLider в ячейке прототипа. Заранее благодарю за любую помощь!Сохранение CoreData в UITableViewController, но данные UISlider находятся только в ячейке Prototype - как это сделать для сохранения в CoreData

В моей tableviewcell:

class WineryInfoTableViewCell: UITableViewCell { 

@IBOutlet weak var ratingLabel: UILabel! 
@IBOutlet weak var sliderbutton: UISlider! 

@IBAction func sliderValueChanged(sender: UISlider) { 
    var ratingValue = Float(sender.value) 
    var roundedRatingValue = roundf(ratingValue/0.5)*0.5 
    ratingLabel.text = "\(roundedRatingValue)" 

} 

в моем tableviewcontroller

@IBAction FUNC Save() {

if let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext { 

     myRatingData = NSEntityDescription.insertNewObjectForEntityForName("WineryReview", inManagedObjectContext: managedObjectContext) as wineryReview 

     myRatingData.wineryName = wineryNames 
     //myRatingData.rating = ratingLabel.text how do I call this for saving? 
     myRatingData.review = myRatingEntry 


     var e:NSError? 
     if managedObjectContext.save(&e) != true { 
      println("insert error: \(e!.localizedDescription)") 
      return 
     } 
    } 

    // If all fields are correctly filled in, extract the field value 
    println("Winery: " + myRatingData.wineryName) 
    println("Review: " + myRatingData.review) 
    //println("Rating: " + ratingLabel.text!) how do I call this for saving? 

} 

ответ

0

Я еще новичок в Swift, но я Думаю, у меня может быть ответ на часть вашей дилеммы. Чтобы ссылаться на UISlider в ячейке таблицы, вы можете использовать «теги», чтобы получить ссылку на него.

Например:

let cell = tableView.dequeueReusableCellWithIdentifier(TableViewCellIdentifiers.someCell, forIndexPath: indexPath) as UITableViewCell

let slider = cell.viewWithTag(100) as UISlider

В приведенном выше примере, я использовал бы назначен UISlider с меткой 100, так что я могу получить ссылку на него с помощью cell.viewWithTag (100).

Простите меня, если это не сработает!

0

Вы можете передать объект WineryReview в ячейку и установить его рейтинг непосредственно из sliderValueChanged.

В cellForRowAtIndex:

cell.wineryReview = myReviewData 

В TableViewCell:

@IBOutlet weak var ratingLabel: UILabel! 
@IBOutlet weak var sliderbutton: UISlider! 

var wineryReview: WineryReview? 

@IBAction func sliderValueChanged(sender: UISlider) { 
    var ratingValue = Float(sender.value) 
    var roundedRatingValue = roundf(ratingValue/0.5)*0.5 

    wineryReview.rating = roundedRatingValue 

    ratingLabel.text = "\(roundedRatingValue)" 
} 

Вы могли бы назвать сэкономить на связи с TableViewController, если вам нравится. Я сделал что-то очень похожее на это в проекте.