访问UITextField嵌套在UITableView

时间:2015-06-25 10:47:36

标签: ios swift uitableview cocoa-touch uitextfield

我试图访问UITextFields的内容,当"保存"时,它会嵌套在UITableView中。按下按钮。

然而,调试(如下面进一步显示)显示我可以访问有关texfield的任何内容,除了文本 ...

无论我在按下按钮之前输入什么都没有影响......

我觉得我应该使用UITextField代表,但不要理解为什么,也不要 ......

这是我使用的代码:

@IBAction func saveNewGuestButton(sender: UIBarButtonItem) {
    let entity : NSEntityDescription = NSEntityDescription.entityForName("Guest", inManagedObjectContext: self.managedObjectContext)!
    // Initialize Record
    let record : Guest = Guest(entity:entity, insertIntoManagedObjectContext:managedObjectContext)
    // Populate Record
    for i in 0..<3
    {
        let indexPath : NSIndexPath = NSIndexPath(forRow: i, inSection: 0)
        let cell = tableView(self.tableView, cellForRowAtIndexPath: indexPath) as! newGuestProtoCell
        if i==0
        {
            record.guestFirst = cell.newGuestFirstNameTextField.text
            println("indexPath :\(indexPath), recorded : \(record.guestFirst) and TextField : \(cell.newGuestFirstNameTextField.text) + \(cell.newGuestFirstNameTextField). test : \(cell.newGuestFirstNameTextField.defaultTextAttributes) and \(cell.newGuestFirstNameTextField.attributedText) and \(cell.newGuestFirstNameTextField.placeholder) and \(cell.newGuestFirstNameTextField.tag)")
        }
        if i==1
        {
            record.guestLast = cell.newGuestLastNameTextField.text

            println("indexPath :\(indexPath), recorded Last : \(record.guestLast), recorded first : \(record.guestFirst) and textfield : \(cell.newGuestLastNameTextField.text)")
            //newGuest["lastName"] = cell.newGuestLastNameTextField.text
        }
        if i==2 && guestImage != nil
        {

            record.guestImage = UIImagePNGRepresentation(guestImage) as NSData
            println("indexPath :\(indexPath), recorded image: \(record.guestImage.superclass) and UIImageView's image : \(cell.guestImageIV.image)")
        }
    }

控制台打印以下内容,证明问题不在我的tableview中,我的&#34; for&#34;循环访问它或文本字段本身(或它&#34; outlet &#34;):

  

indexPath: {length = 2,path = 0 -   0},记录: 和TextField:+ &gt;。 测试:   [NSParagraphStyle:Alignment 0,LineSpacing 0,ParagraphSpacing 0,   ParagraphSpacing在0之前,HeadIndent 0,TailIndent 0,   FirstLineHeadIndent 0,LineHeight 0/0,LineHeightMultiple 0,   LineBreakMode 4,Tabs(       28L,       56L,       84L,       112L,       140L,       168L,       196L,       224L,       252L,       280L,       308L,       336L),DefaultTabInterval 0,Blocks(null),Lists(null),BaseWritingDirection -1,HyphenationFactor 0,TighteningFactor 0,   HeaderLevel 0,NSShadow:NSShadow {0,-1} color = {(null)},NSFont:    字体系列:   &#34; .HelveticaNeueInterface-经常&#34 ;; font-weight:normal;字体样式:   正常; font-size:14.00pt,NSColor:UIDeviceRGBColorSpace 0 0 0 1]   和Optional()和Optional(&#34; First Name&#34;)和0 indexPath   :{length = 2,path = 0 - 1},   录制最后:,首先录制:和textfield:indexPath   :{length = 2,path = 0 - 2},   录制的图像:可选(NSMutableData)和UIImageView的图像:   可选(大小{1500,1001}方向0   比例1.000000)

1 个答案:

答案 0 :(得分:0)

通过阅读你的代码,你做错了:

let cell = tableView(self.tableView, cellForRowAtIndexPath: indexPath) as! newGuestProtoCell

cellForRowAtIndexPath用于准备视图以显示它。因此,它应该清除您输入的内容,并填写正确记录的内容。 (indexpath处的记录)。然后你应该得到一个textview文本为null的视图。

关于如何获取值,您可以使用确切的方法设置委托UITextFieldDelegate。 tableView(self.tableView,cellForRowAtIndexPath:indexPath)。