以前のプロジェクトからビューコントローラにアクセスできますか?Swift 3の別のプロジェクトからView Controllerにアクセス
私が達成したいのは、私の以前のプロジェクトのビューコントローラを私の新しいプロジェクトにプログラムで使用することです。スウィフト3で
答えて
フレームワークターゲットを使用して、UIViewなどの任意の一般的なコードを実質的に含めることができます。あなたの枠組みの中で
:あなたのアプリで
open func commonView() - UIView {
// code to create view or call up xib file from framework
}
:
import MyFramework
class MainViewController:UIViewController {
override viewDidLoad() {
self.view = commonView()
}
}
しかし、あなたはそれがのUIViewControllerになりたい場合は?私は簡単にうまくいくかどうかはわかりません。たぶんVCのビューの中のすべてを分割し、それがロジックである場合、アプリ内のVCの子VCにすることができます。このようなシナリオでは、@ Lionがあなたに与えたより手作業の解決策が得意かもしれません。
here's私は数週間前に回答した質問からFrameworkターゲットを設定する方法の詳細な説明をお読みください。
EDITコメントに基づいて、ここでもう少し役に立つかもしれません。まず、私の元の回答には、最後にXcodeで設定するのに役立つリンクが含まれていることを覚えておいてください。また、重要なことは - おそらく最も重要なこと - 物事を適切に設計することです!
同じように見え、特定のアプリ内の特定の機能に接続できる一連のボタンを追加する共通のコードを使用したいとします。
最初に、プラットフォームのためにできることとできないことを認識します。あなたはCocoa(Foundation)とCocoa Touch(UIKit)を持っています。つまり、NSButtonとUIButtonがあります。私はあなたが単に "ボタン"を返すフレームワークを作ることはできません。 (しかし、フレームワークは、プラットフォームに依存しないためCore Imageフィルタの出力を返すことができます)。
UIKitに制限を加えて、ストーリーボードとコントローラを表示しましょう。私は後者について多くの混乱を見いだしている。 "ビュー"と "ビューコントローラ"には大きな違いがあります。昨日、私は質問のためにこれを編集しました。 UIViewは、UIKitのほぼすべてのコントロールのベースです。 UIViewControllerには、ビューを操作するロジックが含まれています。 (今はMVC 101です。)
ストーリーボードは、Xcode固有のもので、再利用可能な方法ではありません。あなたができることかもしれません。結局のところ、Xcodeが使用する特定のXMLフォーマットです。
おそらくUIViewControllerをフレームワーク呼び出しの戻り値として使うことはできませんが(少なくとも簡単にはできませんが)、UIViewとそのサブクラスを使用できます。そして、何を推測する? UIButtonはそのようなものです。
スウィフトはフレームワークに多くを導入します。拡張機能と便利初期化子は2つの機能です。あなたがフレームワークにこれを入れてみましょう:
extension UIButton {
convenience public init(
title:String,
titleColor:UIColor,
titleFontSize:CGFloat,
image:UIImage,
titleEdgeInsets:UIEdgeInsets,
imageEdgeInsets:UIEdgeInsets,
tintColor:UIColor,
backgroundColor:UIColor,
borderColor:CGColor,
borderWidth:CGFloat,
cornerRadius:CGFloat
) {
self.init(type: .system)
self.setTitle(title, for: .normal)
self.setTitleColor(titleColor, for: .normal)
self.titleLabel?.font = UIFont.systemFont(ofSize: titleFontSize)
self.setImage(image, for: .normal)
self.titleEdgeInsets = titleEdgeInsets
self.imageEdgeInsets = imageEdgeInsets
self.tintColor = tintColor
self.backgroundColor = backgroundColor
self.layer.borderColor = borderColor
self.layer.borderWidth = borderWidth
self.layer.cornerRadius = cornerRadius
self.translatesAutoresizingMaskIntoConstraints = false
}
}
あなたが結合する場合は、このと:
公共FUNCのreturnImage(_命名:文字列) - > UIImage { myBundle = Bundle.init(識別子をしてみましょう: "com.company.framework") let imagePath =(myBundle?.path(forResource: "images"、ofType: "bundle"))! + "/" +名前付き theImage = UIImage(contentsOfFile:imagePath) イメージを返す! }
[あなたのフレームワークIDを持つ「com.company.name」、およびバンドルの名前で「画像」を置き換え]そして、あなたがいる限り、あなたを輸入して、あなたのアプリケーションでこれを行うことができますフレームワーク:
let openCamera = UIButton(
title: "Camera",
titleColor: UIColor.yellow,
titleFontSize: 15,
image: returnImage("Camera"),
titleEdgeInsets: UIEdgeInsets(top: 0, left: -51, bottom: -49, right: 0),
imageEdgeInsets: UIEdgeInsets(top: 0, left: 0, bottom: 23, right: -51),
tintColor: UIColor.yellow,
backgroundColor: UIColorFromRGB(0x1F1F1F),
borderColor: UIColor.yellow.cgColor,
borderWidth: 2,
cornerRadius: 10)
私はまだSwiftとフレームワークで微妙なことを学んでいます...オプションなど。
public class ToolBoardCloseButton: UIButton {
convenience init(
tag :Int,
target :Any,
action :Selector
)
{
self.init(frame: CGRect.zero)
self.backgroundColor = sgRed
self.setTitle("Close", for: .normal)
self.tintColor = UIColor.white
self.layer.cornerRadius = 5
self.layer.borderColor = UIColor.white.cgColor
self.layer.borderWidth = 1
self.tag = tag
self.addTarget(target, action: action, for: .touchUpInside)
}
}
をそしてそうそれはあなたのアプリケーションでこれを意味します:しかし、あなたはまた、あなたの枠組みの中でこれを行うことができます。もちろん、
closeButton = ToolBoardCloseButton(tag: tag, target: target, action: hideAction)
を、あなたはこれに制御を持っている場合は、あなたのターゲットとアクションをオプションに(あなたが必要ならば、私はしなかった)。そうすれば、あなたがそれをコーディングする限り、あなたの呼び出しでオプションにすることができます。
最後のメモ。私のフレームワークでは、「hideAction」の背後にあるUIロジックは、UIViewのサブクラスであるToolBoardクラスの一部としてそこにあります。私のすべてのアプリケーションは、ビューコントローラにあります(1)ToolBar、ツールバーボタン、およびボード(そのサイズとともに)をインスタンス化する、(2)クローズボタンを作成し、閉じるためにフレームワークを呼び出す、アプリ固有のコード(3)を残してください。 UIViewControllerをフレームワーク呼び出しに移動する方法が見つからないかもしれませんが、すべての共通コードとビューを1つに移動できるはずです。
フレームワークを迅速に作成するためのビデオチュートリアルはありますか?フレームワークの中には、ボタンをクリックするなどの機能を備えた迅速なファイルとストーリーボードがあります。 iOSプロジェクトでの実装。あなたのチュートリアルを私にリンクさせることができれば素晴らしいでしょう。 :) – ibmot
私は古い学校のコーダーです。私は1984年以来コンピュータをプログラミングしていて、いくつかの言語(メインフレームとマイクロソフトのプラットフォームにかなり詰まっている)を知っていて、2005年以来Xcodeに取り組んでいました。Xcode 4までは別の "MVC"プラットフォームをコーディングしました。再利用可能なコードを使用することは、どのIDE(この場合はXcode)を使用しても、あなたがどのプラットフォーム(この場合はUIKitまたはFoundation)と言語(Swift)を使用していても同じです。 。私は私の答えに役立つかもしれない短い更新を行います。 – dfd
現在のプロジェクトから別のプロジェクトのviewcontroller
を開くことはできません。そのためには、具体的なviewcontroller
をプロジェクトに追加する必要があります。そのviewcontroller
をコピーして貼り付けることができ、それはあるプロジェクトから別のプロジェクトに容易に授業です!はい、あなたはあなたのアプリから別のインストールされたアプリケーションを開くことができます(しかし、これは私があなたの質問から理解しているようには望みません)!
- 1. 別のView Controllerから変数にアクセスします。 Swift
- 2. 1つのView Controllerから別のView ControllerにUI ImageViewを渡す方法は? swift 3
- 3. Swift 3 View Controllerを表示
- 4. Swift 3 - ユーザーの場所を保存し、別のView Controllerから呼び出す
- 5. ViewController Swiftを備えた別のView Controller内3
- 6. Swift 3:TabBarControllerからChild View Controllerにデータを渡す
- 7. コンテナビュー内の別のView ControllerからView Controllerをロードする
- 8. 別のView Controllerクラスからの配列へのアクセス
- 9. Xcode、Swift、Table View Controller
- 10. 1つのView Controllerから別のView Controllerへデータを渡す方法
- 11. Swift:ユーザーがTableviewセルをタップすると、あるView Controllerから別のView Controllerへデータをシフトする方法
- 12. (Swift)アクセス方法別のView ControllerからViewControllerのnavigationItemに何かを割り当てるか?
- 13. Swift 3 - 既存のView ControllerにAdMobが表示されない
- 14. 最後のView Controllerの3つのView Controllerの近接度
- 15. Swift 3 - View Controller間の変数と関数の受け渡し
- 16. 別のView Controllerに戻って別のView Controllerに転送する方法
- 17. View Controller NIBを別のView Controllerに追加する
- 18. Swift 3.0別のView Controllerからユーザーの位置座標を取得
- 19. Swift View Controller with UITableViewセクション
- 20. View ControllerからSwiftのクラスにメッセージを渡す
- 21. ロールベースの異なるView Controllerを表示する - Firebase、Swift 3
- 22. 別のView ControllerへのSwift Segueの機能
- 23. Swift 3 - 非同期ジョブ後にView Controllerを解除する
- 24. UICollectionView Swift 3から独立したView Controllerで画像を表示する
- 25. View Controllerからポップアップビューコントローラ(swift/ios)にデータを渡すには
- 26. 別のView ControllerでView Controllerを起動する方法は?
- 27. 別のView ControllerでUserdefaultにアクセスする方法
- 28. 他のUIViewControllerからView Controllerを削除するSwift iOS
- 29. View ControllerからView ControllerにFirebaseデータを送信
- 30. View Controllerから別のView Controllerに時間を転送するにはどうすればいいですか?
[Swift:uibuttonがタップされているときに新しいアプリを開く方法](http://stackoverflow.com/questions/33932303/swift-how-to-open-a-new-app-when-uibutton) -is-tap) –