2013-05-02 6 views
0

위임을 사용하여 UIButton의 제목을 변경하고 있습니다.iOS : 대리인을 통해 UIButton 제목 변경

.H의 MAINVIEW

//MainViewController.h 
#import <UIKit/UIKit.h> 

@class SignUpDelegate; 
@protocol SignUpDelegate <NSObject> 
@required 
-(void)loggedIn; 
@end 

@interface MainViewController : UITableViewController <NSFetchedResultsControllerDelegate> 
{ 
    id <SignUpDelegate> delegate; 
} 
@property (nonatomic, assign) id <SignUpDelegate> delegate; 
-(void)loggedIn; 

@end 

하는 .m

@interface MainViewController() 
//This button is connected to the UINavigationBar Button that needs its title changed. 
//Via Interface Builder, the default value of the title is setup as "Login" 
[email protected] (weak, nonatomic) IBOutlet UIBarButtonItem *logInOutButton; 
@end  

-(void)loggedIn 
{ 
    NSLog (@"This is Logged in inside MainView.m"); 
    self.logInOutButton.title = @"Logout"; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *destinationViewController = segue.destinationViewController; 
    Signup *signUp = [destinationViewController isKindOfClass:[Signup class]] ? (Signup*)destinationViewController : nil; 
    signUp.mainViewController = self.delegate; 
} 

.H 가입

#import <UIKit/UIKit.h> 
#import "MainViewController.h" 
@interface SignUp : UIViewController <UITextFieldDelegate, UIActionSheetDelegate, SignUpDelegate> 
@property (strong, nonatomic) MainViewController *mainViewController; 
@end 

하는 .m

@synthesize mainViewController; 
- (IBAction)createUser:(id)sender 
{ 
    [self loggedIn]; 
} 

- (void) loggedIn 
{ 
    NSLog (@"This is Logged in inside SignUp"); 
    [mainViewController loggedIn]; 
} 
S

오, 모두 NSLogs 내가 대표는 그러나 탐색 표시 줄에있는 UIButton에 제목이 STMasterViewController (이 대신 MainViewController을 했어야 다시 때문이다 "로그 아웃"

답변

1

에 절대 변경 작업을 의미합니다 생각하는, 글씨?) 때마다 loggedIn 대리자 메서드. (-[MainViewController loggedIn]에 중단 점을 추가하고 self.logInOutButton이 nil이 아닌지 확인하여이를 확인할 수 있습니다. 대신 기존 인스턴스 MainViewController에 대한 참조를 가져 와서 조작해야합니다.

+0

감사합니다. 네, MainViewController (죄송합니다, 나는 편집 적이며 실제 변수 이름을 변경)이라고 가정합니다. MainViewController의 기존 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까? – user1107173

+0

@ user1107173'SignUpController'는 어떻게 생성됩니까? – Mar0ux

+0

Storyboard에서 만든 segue입니다. – user1107173