私はShare extension
&に取り組んでいます。これに関する質問が1件あります。ポップアップ(デフォルト)の代わりに、共有拡張のフルビューコントローラを開くことはできますか
共有拡張でフルビューコントローラーを開くことは可能ですか、またStoryboard
をShare extension
に使用してUITableView
または他のIBoutlet
を追加することはできますか?事前に
おかげ
私はShare extension
&に取り組んでいます。これに関する質問が1件あります。ポップアップ(デフォルト)の代わりに、共有拡張のフルビューコントローラを開くことはできますか
共有拡張でフルビューコントローラーを開くことは可能ですか、またStoryboard
をShare extension
に使用してUITableView
または他のIBoutlet
を追加することはできますか?事前に
おかげ
ステップ1:はMainPageViewController
という名前の新しいUIViewController
を追加します。
ステップ2:は、MainInterface
ストーリーボードで新しいビューコントローラを追加ストーリーボードのカスタムクラスのセクションでMainPageViewController
へのクラスを変更、アイデンティティセクションでMainPageViewController
にStoryboard ID
を設定します。
ステップ3:デフォルトではオープンシェア拡張子のInfo.plist
ではなく、デフォルトNSExtensionMainStoryboard
キー使用NSExtensionPrincipalClass
キーなので、最終的な結果を今すぐthis-
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>TRUEPREDICATE</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
ようになります
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>TRUEPREDICATE</string>
</dict>
<key>NSExtensionPrincipalClass</key>
<string>HomeViewController</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
ここで、HomeViewController
は新しいエントリポイントコントローラです。
ステップ4:今、我々はfix weird issue related with module namingに必要最も重要。
これを修正するには、HomeViewController
ファイルの先頭に@objc(HomeViewController)
を追加する必要があります。
ステップ5:
MainPageViewController
はの識別子である import UIKit
@objc(HomeViewController)
class HomeViewController : UINavigationController {
init() {
let viewController:UIViewController = UIStoryboard(name: "MainInterface", bundle: nil).instantiateViewController(withIdentifier: "MainPageViewController") as UIViewController
super.init(rootViewController: viewController)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.size.height)
UIView.animate(withDuration: 0.25, animations: {() -> Void in
self.view.transform = CGAffineTransform.identity
})
}
}
:はまた、プレゼンテーションをアニメーション化するために、我々はviewWillAppear
参照コードの下を参照してくださいにアニメーションのコードを追加する必要がありますあなたの
MainViewController
、我々が提示したい。ステップ6:たちは
MainPageViewController
クラスに新しい関数を作成することができますアニメーションで却下する:保存上のFUNC上記func hideExtensionWithCompletionHandler(completion:@escaping (Bool) -> Void) { UIView.animate(withDuration: 0.20, animations: { self.navigationController!.view.transform = CGAffineTransform(translationX: 0, y: self.navigationController!.view.frame.size.height) }, completion: completion) }
コールまたは[キャンセル]ボタンをし、ブロック内で、我々は呼び出すことができ
completeRequest
かcancelRequest(withError:)
func saveButtonTapped(sender: UIBarButtonItem) { self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil) }) }
今、あなたがしたいことは何でもやってください。ダブルマン:-)
はい、whatsappはそれを行います。 –
これをチェックしてください、これは速いの古いバージョンですが、あなたはそれを助けることができます。 https://github.com/martinnormark/ShareByMail –