2014-12-23 2 views
0

신속하게 작성 하시겠습니까? 난 강력하게 스위프트와 오브젝티브 C 상호 운용성에 리소스를 참조하시기 바랍니다 - 나는 문제가 신속 내 첫 번째 언어이며이 모든목표 C에서 UIScroll 및 UIPageControl을 신속하게 변환

UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height); 
    scrollView.delegate = self; 

    UIPageControl * pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 90, scrollView.frame.size.width, 20)]; 
    pageControl.numberOfPages = scrollView.contentSize.width/scrollView.frame.size.width; 
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged]; 

Then you need to add the following two methods: 

- (IBAction)changePage:(id)sender { 
    CGFloat x = pageControl.currentPage * scrollView.frame.size.width; 
    [scrollView setContentOffset:CGPointMake(x, 0) animated:YES]; 
} 

-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    NSInteger pageNumber = roundf(scrollView.contentOffset.x/(scrollView.frame.size.width)); 
    pageControl.currentPage = pageNumber; 
+0

얼마나 당신이 신속 이해한다는? 어느 부분에 고민하고 있습니까? – Okapi

+0

글쎄, 필자는 PageController와 UIScrollView를 연결하고 싶지만, 필요한 리소스가 있지만 pageController 함수를 호출 할 때 오류가 발생한다는 것을 충분히 알고있다. 예를 들어, 나는 changePage (보낸 사람 : UIPageControl) {pageControl.currentPage - pageControl.currentPage를 사용할 수 없다는 오류가 있습니다} – Tom

답변

6

중요한 것부터 먼저 목표 C로 작성되어 있기 때문에이 번역을 보내고 있습니다. 자세한 내용은 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/을 참조하십시오.

스위프트는 자체 숙어가있는 언어입니다. Objective-C 코드는 다양한 방법으로 변환 될 수 있습니다. 예를 들어 Objective-C에서 객체로 작업 할 때는 포인터를 사용해야하며 암시 적으로 nil 참조를 가질 수 있습니다. Swift는이를 표현하기 위해 선택적 유형을 사용하므로 문맥에 따라 UIScrollView * scrollViewlet scrollView : UIScrollView 또는 let scrollView : UIScrollView?으로 번역 할 수 있습니다.

물론 이것은 빙산의 일각에 지나지 않습니다. 컨텍스트에 따라 가능한 번역 변경 사항은 로그 방식이므로 코드를 마이그레이션하기 전에 기본적인 Swift를 배우고 이해하는 것이 좋습니다.

좋아, 우리가 분명히있어 있기 때문에, 여기에 번역 제공 :

let scrollView = UIScrollView(frame: CGRectMake(0, 0, 100, 100)) 
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 3, scrollView.frame.size.height) 
scrollView.delegate = self 
let pageControl = UIPageControl(frame:CGRectMake(0, 90, scrollView.frame.size.width, 20)) 
pageControl.numberOfPages = Int(scrollView.contentSize.width/scrollView.frame.size.width) 
pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged) 


func changePage(sender: AnyObject) ->() { 
    let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width 
    scrollView.setContentOffset(CGPointMake(x, 0), animated: true) 
} 

func scrollViewDidEndDecelerating(scrollView: UIScrollView) ->() { 
    let pageNumber = round(scrollView.contentOffset.x/scrollView.frame.size.width); 
    pageControl.currentPage = Int(pageNumber) 
} 
+0

이것은 매우 유용한 정보였습니다 감사합니다! – Tom