Zoe*_*b S 2 iphone uitableview ios swift ios8-share-extension
我正在处理并且Share extension
我有一个与此相关的查询。
是否有可能打开共享扩展全视图控制器,还可以再加UITableView
或其他IBoutlet
使用Storyboard
中Share extension
。
提前致谢
步骤 1:添加新UIViewController
命名的MainPageViewController
.
Step2:在MainInterface
Storyboard中添加新的View Controller,将它的类改为 MainPageViewController
在Storyboard的Custom Class部分,在Identity部分设置Storyboard ID
为MainPageViewController
。
Step3: 打开 Share 扩展的 info.plist
默认情况下它看起来像这样 -
<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>
Run Code Online (Sandbox Code Playgroud)
现在代替默认NSExtensionMainStoryboard
密钥使用NSExtensionPrincipalClass
密钥,因此最终结果将是
<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>
Run Code Online (Sandbox Code Playgroud)
HomeViewController
我们新的入口点控制器在哪里。
Step4:现在,最重要的是我们需要解决与模块命名相关的奇怪问题。
要修复它,我们需要@objc(HomeViewController)
在HomeViewController
文件顶部添加。
Step5:同样要为演示文稿添加动画,我们需要在viewWillAppear
请参阅以下参考代码:
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
})
}
}
Run Code Online (Sandbox Code Playgroud)
MainPageViewController
您的 标识符在哪里MainViewController
,我们要展示它。
第6步:要关闭动画,我们可以在MainPageViewController
类中创建新函数:
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)
}
Run Code Online (Sandbox Code Playgroud)
在保存或取消按钮和块内调用上面的函数,我们可以调用completeRequest
或cancelRequest(withError:)
func saveButtonTapped(sender: UIBarButtonItem) {
self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in
self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)
})
}
Run Code Online (Sandbox Code Playgroud)
现在,做任何你想做的人,做双重男人;-)
归档时间: |
|
查看次数: |
1759 次 |
最近记录: |