2012-05-01 4 views
2

UIButton에서 내 다음 UITtableviewcontroller로 String을 보내는 문자열은 UIButton Title (월요일 ... 일요일)입니다.이 문자열은 NSPredicate에서 내 테이블 정보를 필터링하는 데 사용됩니다. 하루.prepareForSegue를 사용하여 UIButton에서 문자열을 전달하는 방법

@property (nonatomic, weak) NSString *dayOTW; 

- (IBAction)selectDay:(UIButton *)sender { 
UIButton *dayW = sender; 
dayOTW = dayW.titleLabel.text; 
NSLog(@"button press = %@", dayOTW); 
} 

2012-05-01 06:23:21.731 passingdata[99957:fb03] button press = Monday 

그리고 내 다음 화면

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
// Make sure your segue name in storyboard is the same as this line 
if ([[segue identifier] isEqualToString:@"SendWeekDay"]) 
{ 
    // Get reference to the destination view controller 
    ViewController *vc = [segue destinationViewController]; 

    // Pass any objects to the view controller here, like... 
    vc.dayOTW = dayOTW; 
    } 
} 

내가 가면 내가, 내 테이블에 정보가 표시되지 않습니다 버튼을 선택 처음에 SEGUE 다시 그 버튼에 대한 올바른 정보와 내 테이블 쇼를 버튼을 선택 y.

내가 뭘 잘못하고있는 걸까요?

위와 관련하여 질문이 하나 더 있습니다. 나는 일주일에 매일 7 개의 UIButtons를 가지고 있는데, 어떻게 하나의 segue로 모든 UIButtons를 segue 할 수 있습니까?

감사

+0

질문 제목을 좀 더 구체적으로 편집 할 수 있습니까? –

+0

제목이 수정되었습니다. :) – HernandoZ

+0

답변보기 : http://stackoverflow.com/a/31934786/3681880 – Suragch

답변

4

SEGUE는 변수가 처음 설정되지 않도록 당신이 그것을 클릭 IBAction를 방법 전에 호출되고있다.

segue가 버튼에 연결되어 있으면 prepareForSegue에 sender이되므로 액션 메소드가 실제로 필요하지 않습니다. 그냥 prepareForSegue에 제목을 얻을 :

UIButton *dayButton = (UIButton*)sender 
vc.dayOTW = sender.titleLabel.text; 

모든 버튼에 같은 ​​SEGUE를 연결하려면 각 버튼에서 드래그 Ctrl 키,하지만 모두가 같은 식별자를 segues주고있다. 이것은 스토리 보드에서 더러워 보일 수 있습니다. 대안으로 소스 뷰 컨트롤러에서 직접 단일 세그먼트를 생성하고 액션 메소드 (이 경우에는 모든 버튼에 연결될 것입니다)에 performSegueWithIdentifier:sender:을 호출하십시오.

-(IBAction)dayButtonPressed:(UIButton*)sender 
{ 
    [self performSegueWithIdentifier:@"SendWeekDay" sender:sender];  
} 

은 보낸 사람과 performSegue 방법에있는 버튼을 통과 할 것입니다, 그래서 당신은 위에 설명 된 코드를 사용할 수 있습니다.

+0

어떻게 segue가 먼저 호출되었는지 확인할 수 있습니까? 또는 문자열을 먼저 초기화해야합니까? 나는 나중에 그것을 시도 할 것이다. – HernandoZ

+0

원할 경우 각 메소드에 로그를 넣을 수 있지만 대답은 문자열 변수가 필요 없다는 것입니다. 버튼은 prepareForSegue에서 보낸 사람으로 사용되므로 거기에서 텍스트를 가져옵니다. 그 시점에서. – jrturton

+0

ok 나는 감각을 느낍니다. 나중에 해보겠습니다. 감사합니다. – HernandoZ

관련 문제