Objective-C:UIViewController从ContainerView获取数据

时间:2016-03-10 19:58:30

标签: ios uitableview uicontainerview

这是我第一次使用容器视图。

在我的应用程序的LoginViewController中,我使用的是一个容器视图,它嵌入了一个带有两个静态单元格的UITableViewController,其中包含用于电子邮件和密码的UITextFields。

当用户按下“登录”时LoginViewController上的按钮,该类如何从容器视图中嵌入的UITableViewController获取信息?

2 个答案:

答案 0 :(得分:0)

您可以在var geocoder = new google.maps.Geocoder(); $scope.addresses var looping = function(index) { var storeItem = $scope.addresses[index]; var address = ... myGeocode(address, function(results, status) { .. index++; if (index < $scope.addresses.length) { looping(index, arguments.callee); } }); } looping(0); function myGeocode(address, callback) { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address' : address }, callback); } 中捕获登录表单视图控制器,因为容器视图会触发到子视图控制器的嵌入式segue。然后让登录表单View Controller公开电子邮件和密码。下面的代码是在Swift中,但没有任何关于它的神奇Swifty。它更容易证明我的意思。

prepareForSegue(segue:sender:)

如果需要,可以根据表单值扩展以启用/禁用登录按钮。

要翻转它并回调父级,就像讨论讨论所讨论的那样,在父级上使用协议并在执行segue操作期间将其附加到表单,就像上面一样。

class LogInViewController : UIViewController {
   var logInForm : LogInFormViewController?
   override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
       if let child = segue.destinationViewController as? LogInFormViewController {
           logInForm = child
       }
   }
   @IBOutlet func logIn(sender: AnyObject?) {
       sendLogIn(logInForm?.email, logInForm?.password)
   }
}
class LogInFormTableViewController : UITableViewController {
    var email:String { get { return _emailField.text } }
    var password:String { get { return _passwordField.text } }
}

答案 1 :(得分:0)

  1. 您可以创建一个代表(协议)来回拨
  2. 您可以使用NSNotification
  3. 您可以编写轻量级回拨块
  4. 我相信对于containerView及其childView,有一个名为parentViewController的属性,您可以参考。