2014-02-23 2 views
0

나는 UILabel의 집합을 가지고 있으며 선택한 항목의 ID를 태그에 넣고 싶습니다. 좋아요 :prepareForSegue를 사용하여 레이블에서 태그/ID 가져 오기

UILabel *miII = [[UILabel alloc] initWithFrame:CGRectMake(530, 0, 25, 25)]; 
miII.tag=item.id; 

여기에 destinationViewController의 itemId 속성을 설정할 수있는 위치가 있습니다. 내가 가지고있는 문제는 어떻게 UILabel에서 태그에 액세스합니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 내 경험을 의견에 포함 시켰으며 UITableView를 사용하지 않았습니다. 사전

+0

... ItemDetailiViewController.h에서

@interface ListViewController() { @private int _itemId; } ..... -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // NSLog(@"prepareForSegue: %@", segue.identifier); // NSLog(@"prepareForSegue: %@", sender); ItemDetailViewController *myVC = [segue destinationViewController]; [myVC setItemId:_itemId]; // obviously need property for itemId on ItemDetailViewController } - (void)tapRecognized:(id)sender { NSLog(@"that tap was recognized with %d", [(UIGestureRecognizer *)sender view].tag); _itemId=[(UIGestureRecognizer *)sender view].tag; 

프로그래밍 방식으로 레이블을 만들 것 같습니다 : 나는 다음을했다. 이 태그를 클래스 전체에 액세스 할 수있는 배열에 저장할지 여부는 알 수 없습니다. –

+0

당신은'sender'가 당신의 라벨이라고 확신합니까? – null

+0

아래의 해답을 알아 냈습니다. – timpone

답변

0

에서

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"prepareForSegue: %@", segue.identifier); 
    ItemDetailViewController *myVC = [segue destinationViewController]; 

    //[myVC setItemId:12]; // <-- hard-coding this works 
    [myVC setItemId:sender.view.tag]; // this doesn't work 

} 

- (void)tapRecognized:(UIGestureRecognizer *)sender 
{ 
    NSLog(@"that tap was recognized with %d", sender.view.tag); // <-- this works 
    [self performSegueWithIdentifier: @"ItemSegue" sender: self]; 


} 

들으은 sol'n은 매우 간단하지만 다른 질문의와의에 따라 약간의 비밀이었다.

@interface ItemDetailViewController : UIViewController 

@property (nonatomic) int itemId; 
관련 문제