我如何从js world传递swift自定义组件的属性

E_J*_*ovi 6 ios react-native

我有swift编写的自定义组件,我想从js world传递一些自定义属性,

但我真的不知道该怎么做,请在下面提供一些主要代码.


演示桥接,Header.h

#import "RCTBridgeModule.h"
#import "RCTViewManager.h"
Run Code Online (Sandbox Code Playgroud)

CollectionViewManagerBridge.m

#import "RCTView.h"
#import "RCTViewManager.h"


@interface RCT_EXTERN_MODULE(CollectionViewManagerSwift, RCTViewManager)

@end
Run Code Online (Sandbox Code Playgroud)

CollectionViewManagerSwift.swift

@objc(CollectionViewManagerSwift)

class CollectionViewManagerSwift : RCTViewManager, UICollectionViewDataSource, UICollectionViewDelegate {

  let contentCellIdentifier = "CellIdentifier"
  var collectionView: UICollectionView

  override init() {
    let layout = CustomCollectionViewLayout()
    let collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: layout)

    collectionView.registerClass(CustomCell.self, forCellWithReuseIdentifier: contentCellIdentifier)
    collectionView.directionalLockEnabled = false
    collectionView.backgroundColor = UIColor.whiteColor()

    self.collectionView = collectionView
  }

  override func view() -> UICollectionView! {
    self.collectionView.delegate = self
    self.collectionView.dataSource = self

    return self.collectionView;
  }

  // ... some other code

}
Run Code Online (Sandbox Code Playgroud)

另外,我还有上面使用的CustomCell.swiftCustomCollectionViewLayout.swift,

当我把这些代码做工精细<CollectionViewManagerSwift />render()方法从JS世界,

但我怎么能从js世界中传递属性<CollectionViewManagerSwift customProperty={customProperties} />,我怎么能customProperty在我的swift代码中定义?

也许我没有表达清楚,谢谢你的时间.


跟进

我尝试添加customPropertyCollectionViewManagerBridge.m

#import "RCTView.h"
#import "RCTViewManager.h"


@interface RCT_EXTERN_MODULE(CollectionViewManagerSwift, RCTViewManager)

RCT_CUSTOM_VIEW_PROPERTY(customProperty, NSArray, CollectionViewManagerSwift)
{
  NSLog(@"%@ -- %@", json[0], json[1]);
}

@end
Run Code Online (Sandbox Code Playgroud)

然后我从js世界叫它

<CollectionViewManagerSwift customProperty={['foo', 'bar']} />
Run Code Online (Sandbox Code Playgroud)

我在Xcode输出中得到了值

2016-02-27 17:58:07.167 Demo[49690:12639774] foo -- bar
Run Code Online (Sandbox Code Playgroud)

但我怎么能得到customPropertyCollectionViewManagerSwift.swift

再次感谢.

问候

Dav*_*ski 0

您需要:“实现 -(UIView *)view 方法”,如本文档中所述: http: //facebook.github.io/react-native/docs/native-components-ios.html#content

您可以在那里初始化 CollectionView。