StoryBoard의 Identifier 지옥을 해결하는 SBConstants
12083 단어 StoryboardiOSSwiftObjective-CXcode
소개
StoryBoard에 의해 View를 만들어 가는 작업은 매우 편리하게 되었습니다.
Property나 Action을 코드에 매핑하는 것도 드래그&드롭으로 간단하게 실시할 수 있습니다.
하지만 Identifier는 StoryBoard에서 설정한 문자열을 플러그러머가 오자 없이 코드에 기술해야 합니다.
그래서 SBConstants 을 이용하면, 설정한 Identifier 로부터 자동적으로 정수 코드를 작성해, 오자나 정수화의 작업 (지옥)으로부터 개방됩니다.
실행 환경
사이트
설치
루비 gem으로 설치합니다.
$ gem install sbconstants
사용법
아래 도움말입니다.
$ sbconstants -h
Usage: DESTINATION_FILE [options]
-p, --prefix=<prefix> Only match identifiers with <prefix>
-s, --source-dir=<source> Directory containing storyboards
-q, --queries=<queries> YAML file containing queries
-d, --dry-run Output to STDOUT
-v, --verbose Verbose output
사용 예 (ObjC)
ht tp // // 파 l- 사무에 ls. 코 m/bぉg/2013/01/31/s와 ry 보아 rd-곤 s단 ts/
미리 PASStoryboardConstants.(h|m) 파일을 Xcode에 수동으로 추가해 둡니다.
$ sbconstants MyApp/Constants/PASStoryboardConstants.h --source-dir MyApp/Storyboards
(위의 명령을 build phases로 설정하면 빌드별로 업데이트 할 수 있습니다)
PASStoryboardConstants.h
// Auto generated file - any changes will be lost
#pragma mark - tableViewCell.reuseIdentifier
extern NSString * const PSBAwesomeCell;
#pragma mark - segue.identifier
extern NSString * const PSBMasterToDetail;
extern NSString * const PSBMasterToSettings;
PASStoryboardConstants.m
// Auto generated file - any changes will be lost
#import "PASStoryboardConstants.h"
#pragma mark - tableViewCell.reuseIdentifier
NSString * const PSBAwesomeCell = @"PSBAwesomeCell";
#pragma mark - segue.identifier
NSString * const PSBMasterToDetail = @"PSBMasterToDetail";
NSString * const PSBMasterToSettings = @"PSBMasterToSettings";
사용 예 (Swift)
htps : // 기주 b. 코 m / 아 rtsy / 에이 드
ObjC에 사용 예 외에도
--swift
옵션을 추가합니다.$ sbconstants Kiosk/Storyboards/StoryboardIdentifiers.swift --source-dir Kiosk/Storyboards --swift
StoryboardIdentifiers.swift
// Auto generated file from SBConstants - any changes may be lost
public enum SegueIdentifier : String {
case ArtsyUserHasNotRegisteredCard = "Artsy User Has Not Registered Card"
case ArtsyUserviaPINHasNotRegisteredCard = "Artsy User via PIN Has Not Registered Card"
case ConfirmBid = "Confirm Bid"
case ConfirmyourBidArtsyLogin = "Confirm your Bid - Artsy Login"
case ConfirmyourBidBidderFound = "Confirm your Bid - Bidder Found"
case ConfirmyourBidBidderNotFound = "Confirm your Bid - Bidder Not Found"
case EmailLoginConfirmedHighestBidder = "Email Login Confirmed Highest Bidder"
case EmailNotFoundonArtsy = "Email Not Found on Artsy"
case ExistingArtsyUserFound = "Existing Artsy User Found"
case LoadAdminWebViewController = "Load Admin Web View Controller"
case PINConfirmedhasCard = "PIN Confirmed has Card"
case PlaceAnotherBid = "Place Another Bid"
case PlaceaHigherBidAfterNotBeingHighestBidder = "Place a Higher Bid After Not Being Highest Bidder"
case PushtoBidConfirmed = "Push to Bid Confirmed"
case RegisterCreditCardToPostal = "RegisterCreditCardToPostal"
case RegisterPostalToConfirm = "RegisterPostalToConfirm"
case ShowAdminOptions = "Show Admin Options"
case ShowLoadingView = "Show Loading View"
case ShowSaleArtworkDetails = "Show Sale Artwork Details"
case ZoomIntoArtwork = "Zoom Into Artwork"
}
public enum ViewControllerStoryboardIdentifier : String {
case AuctionListings = "AuctionListings"
case CardTester = "Card Tester"
case ConfirmYourBid = "Confirm Your Bid"
case ConfirmYourBidArtsyLogin = "Confirm Your Bid Artsy Login"
case ConfirmYourBidEnterEmail = "Confirm Your Bid Enter Email"
case ConfirmYourBidEnterPassword = "Confirm Your Bid Enter Password"
case ConfirmYourBidPIN = "Confirm Your Bid PIN"
case FulfillmentContainer = "Fulfillment Container"
case LoadingBidsorRegistering = "Loading Bids or Registering"
case ManualCardDetailsInput = "Manual Card Details Input"
case NoInternetConnection = "No Internet Connection"
case PlaceYourBid = "Place Your Bid"
case RegisterAnAccount = "Register An Account"
case RegisterConfirm = "Register Confirm "
case RegisterCreditCard = "Register Credit Card"
case RegisterEmail = "Register Email"
case RegisterMobile = "Register Mobile"
case RegisterPassword = "Register Password"
case RegisterPostalorZip = "Register Postal or Zip"
case SaleArtworkDetail = "SaleArtworkDetail"
}
REF
실제로 사용되는 OSS 앱이 있습니다.
Reference
이 문제에 관하여(StoryBoard의 Identifier 지옥을 해결하는 SBConstants), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/susieyy/items/5f1afb9079189e78d792텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)