0

안녕하세요 컬렉션보기 내부에서 UIsegment 컨트롤에 대한 이벤트를 트리거하려고합니다.UI 세그먼트 화 된 컨트롤이 컬렉션보기 내에서 작동하지 않습니다.

여기 내 코드입니다.

CollectionViewCell.h 

@property (strong, nonatomic) IBOutlet UISegmentedControl *mySegmentedControl; 

ViewController.m 
{ 
NSInteger selectedSegment; 
} 

- (UIView *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
cell.mySegmentedControl.tag = indexPath.row; 
selectedSegment = cell.mySegmentedControl.selectedSegmentIndex; 
[cell.mySegmentedControl addTarget:self action:@selector(segmentValueChanged:) forControlEvents:UIControlEventValueChanged]; 
} 

- (void) segmentValueChanged: (UISwitch *) sender { 
//NSInteger index = sender.tag; 
if(selectedSegment == 0) 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"!Alert" 
               message:@"Do you think this property is not exists?" 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Yes", nil]; 
[alert show]; 

}   
else 
{ 
    //your code 
} 
} 

위의 코드는 저에게 적합하지 않습니다. 도움을 주시면 감사하겠습니다. cellForItemAtIndexPath :`

+0

같이 할 것입니다 UISwitch 없습니다. 당신은'segmentValueChanged :'의'selectedSegmentIndex'를 지역 변수로 읽어야합니다. – clemens

+0

@Raj - 내부에 중단 점을 설정해 보았습니다 - (void) segmentValueChanged : (UISwitch *) 발신자. 세그먼트 화 된 컨트롤을 탭한 경우에만 호출됩니다. – kaushal

답변

0

UISegmentedControl는`collectionView에 대한 전체 코드를 게시하시기 바랍니다

- (void) segmentValueChanged: (UISegmentedControl *) sender { 
//NSInteger index = sender.tag; 
if(sender.selectedSegmentIndex == 0) 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"!Alert" 
               message:@"Do you think this property is not exists?" 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Yes", nil]; 
[alert show]; 

}   
else 
{ 
    //your code 
} 
} 
+2

UIAlertController를 사용하면 UIALertView가 사용되지 않습니다. –