2010-11-18 16 views
-2

新規範添加第三個按鈕,並有時間

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

@protocol DatePickerViewControllerDelegate; 

@interface DatePickerViewController : UIViewController { 
    IBOutlet UIDatePicker *datePicker; 
    id<DatePickerViewControllerDelegate> delegate; 
} 

@property (retain) IBOutlet UIDatePicker *datePicker; 
@property (assign) id<DatePickerViewControllerDelegate> delegate; 

NSInteger buttonPressed; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 

- (IBAction)doneButtonPressed:(id)sender; 
@end 

@protocol DatePickerViewControllerDelegate <NSObject> 

@optional 
-(void)datePickerViewController:(DatePickerViewController *)controller didChooseDate:(NSString *)chosenDate; 


@end 


DatePickerViewController.m 

#import "DatePickerViewController.h" 

@implementation DatePickerViewController 

@synthesize datePicker, delegate; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     // Custom initialization 
     self.title = @"Date Picker"; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    NSLog(@"Date Picker. viewDidLoad"); 
    [super viewDidLoad]; 
    double days = 2.0f; 
    datePicker.date = [NSDate dateWithTimeIntervalSinceNow:60.0f * 60.0f * 24.0f * days]; 

} 


//-(void)datePickerViewController:(DatePickerViewController *)controller didChooseDate:(NSString *)chosenDate; 

- (IBAction)doneButtonPressed:(id)sender 
{ 
    if ([self.delegate respondsToSelector:@selector(datePickerViewController:didChooseDate:)]) { 
     NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
     [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

     NSString *dateString = [dateFormatter stringFromDate:[datePicker date]]; 

     [self.delegate datePickerViewController:self didChooseDate:dateString]; 
     [self dismissModalViewControllerAnimated:YES]; 

    } 




} 

- (void)dealloc { 
    [datePicker release]; 
    [super dealloc]; 
} 

@end 

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

@protocol DatePickerViewController2Delegate; 

@interface DatePickerViewController2 : UIViewController { 
    IBOutlet UIDatePicker *datePicker2; 
    id<DatePickerViewController2Delegate> delegate; 
} 

@property (retain) IBOutlet UIDatePicker *datePicker2; 
@property (assign) id<DatePickerViewController2Delegate> delegate; 

NSInteger buttonPressed2; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 

- (IBAction)doneButtonPressed2:(id)sender; 
@end 

@protocol DatePickerViewController2Delegate <NSObject> 

@optional 
-(void)datePickerViewController2:(DatePickerViewController2 *)controller didChooseDate:(NSString *)chosenDate; 


@end 

DatePickerViewController2.m 

#import "DatePickerViewController2.h" 

@implementation DatePickerViewController2 

@synthesize datePicker2, delegate; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     // Custom initialization 
     self.title = @"Date Picker2"; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    NSLog(@"Date Picker2. viewDidLoad"); 
    [super viewDidLoad]; 
    double days = 2.0f; 
    datePicker2.date = [NSDate dateWithTimeIntervalSinceNow:60.0f * 60.0f * 24.0f * days]; 

} 


//-(void)datePickerViewController:(DatePickerViewController *)controller didChooseDate:(NSString *)chosenDate; 

- (IBAction)doneButtonPressed2:(id)sender 
{ 
    if ([self.delegate respondsToSelector:@selector(datePickerViewController2:didChooseDate:)]) { 
     NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
     [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

     NSString *dateString = [dateFormatter stringFromDate:[datePicker2 date]]; 

     [self.delegate datePickerViewController2:self didChooseDate:dateString]; 
     [self dismissModalViewControllerAnimated:YES]; 

    } 




} 

- (void)dealloc { 
    [datePicker2 release]; 
    [super dealloc]; 
} 

@end 

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

@class DatePickerModalExampleViewController; 

@interface DatePickerModalExampleAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    DatePickerModalExampleViewController *viewController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet DatePickerModalExampleViewController *viewController; 

@end 
DatePickerModalExampleAppDelegate.m 
#import "DatePickerModalExampleAppDelegate.h" 
#import "DatePickerModalExampleViewController.h" 

@implementation DatePickerModalExampleAppDelegate 

@synthesize window; 
@synthesize viewController; 


- (void)applicationDidFinishLaunching:(UIApplication *)application { 

    // Override point for customization after app launch 
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 
} 


- (void)dealloc { 
    [viewController release]; 
    [window release]; 
    [super dealloc]; 
} 


@end 

DatePickerModalExampleViewController.h 


#import <UIKit/UIKit.h> 
#import "DatePickerViewController.h" 
#import "DatePickerViewController2.h" 

@interface DatePickerModalExampleViewController : UIViewController <DatePickerViewControllerDelegate> { 
    IBOutlet UIButton *button; 
    IBOutlet UIButton *button2; 
    IBOutlet UIButton *button3; 

} 






@property(nonatomic, retain) IBOutlet UIButton *button; 
@property(nonatomic, retain) IBOutlet UIButton *button2; 
@property(nonatomic, retain) IBOutlet UIButton *button3; 

-(IBAction)buttonPressed:(id)sender; 
-(IBAction)buttonPressed2:(id)sender; 
@end 

DatePickerModalExampleViewController.m 

#import "DatePickerModalExampleViewController.h" 

@implementation DatePickerModalExampleViewController 
@synthesize button; 
@synthesize button2; 
@synthesize button3; 


/* 
// The designated initializer. Override to perform setup that is required before the view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
// Custom initialization 
} 
return self; 
} 
*/ 

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
} 
*/ 


/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
[super viewDidLoad]; 
} 
*/ 

-(IBAction)buttonPressed:(id)sender{ 
    NSLog(@"I was pressed"); 
    buttonPressed = ((UIButton *)sender).tag; 

    DatePickerViewController *datePickerViewController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController" bundle:nil]; 
    datePickerViewController.delegate = self; 
    [self presentModalViewController:datePickerViewController animated:YES]; 
    [datePickerViewController release]; 



switch (((UIButton*)sender).tag) 
    { 

     case 100001: 
     NSLog(@"Button 1 was pressed"); 

      //some code 
     break; 
     case 100002: 
     NSLog(@"Button 2 was pressed"); 

      //some code 
     break; 


    } 
} 



-(IBAction)buttonPressed2:(id)sender{ 
    NSLog(@"I was pressed2"); 
    buttonPressed2 = ((UIButton *)sender).tag; 

    DatePickerViewController2 *datePickerViewController2 = [[DatePickerViewController2 alloc] initWithNibName:@"DatePickerViewController2" bundle:nil]; 
    datePickerViewController2.delegate = self; 
    [self presentModalViewController:datePickerViewController2 animated:YES]; 
    [datePickerViewController2 release];  



    switch (((UIButton*)sender).tag) 
    { 


     case 100003: 
      NSLog(@"Button 3 was pressed"); 

      //some code 
      break; 


    } 
} 





-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.button.tag = 100001; 
    self.button2.tag = 100002; 
    self.button3.tag = 100003; 
    buttonPressed = -1; 
    buttonPressed2 = -1; 


} 


-(void)datePickerViewController:(DatePickerViewController *)controller didChooseDate:(NSString *)chosenDate{ 
    NSLog(@"Chosen Date as String: %@", chosenDate); 

    if (buttonPressed == -1) 
     return; 
    UIButton *buttonToSet = (UIButton*)[self.view viewWithTag:buttonPressed]; 
    buttonPressed = -1; 
    [buttonToSet setTitle: chosenDate forState: UIControlStateNormal]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

-(void)datePickerViewController2:(DatePickerViewController2 *)controller didChooseDate:(NSString *)chosenDate{ 
    NSLog(@"Chosen Date as String: %@", chosenDate); 

    if (buttonPressed2 == -1) 
     return; 
    UIButton *buttonToSet = (UIButton*)[self.view viewWithTag:buttonPressed2]; 
    buttonPressed2 = -1; 
    [buttonToSet setTitle: chosenDate forState: UIControlStateNormal]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 





/* 
// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
// Return YES for supported orientations 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 
*/ 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [button3 release]; 
    [button2 release]; 
    [button release]; 
    [super dealloc]; 
} 

@end 
+0

對不起,我不能讓你。你能明確提出這個問題嗎? – KingofBliss 2010-11-18 16:32:42

+0

我有2個按鈕,當我按下一個日期選取器出來時,一旦我選擇了日期,然後按下完成,日期將轉到兩個按鈕,而不是隻轉到我按下的那個按鈕。我非常感謝你的幫助! – viviana 2010-11-18 20:08:52

+0

不要只是在這裏轉儲代碼,並期望我們知道你在說什麼。詢問有關此代碼某些部分的有針對性的問題。 – 2010-11-22 16:23:35

回答

0

你好,你可以設置按鈕屬性"tag"識別它

取消註釋

- (void)viewDidLoad { 
[super viewDidLoad]; 
} 

和類型:

- (void)viewDidLoad { 
[super viewDidLoad]; 
self.button.tag = 100001; 
self.button2.tag = 100002; 

} 

然後DatePickerModalExampleViewController.h 依次
(IBAction)buttonPressed(IBAction)buttonPressed:(id)sender;

DatePickerModalExampleViewController.m然後轉動

-(IBAction)buttonPressed-(IBAction)buttonPressed:(id)sender

DatePickerModalExampleViewController.m這種方法可能是這樣的:

-(IBAction)buttonPressed:(id)sender 
    { 
     switch(((UIButton*)sender).tag) 
     { 
     case 100001 
       NSLog(@"Button 1 was pressed"); 
       DatePickerViewController *datePickerViewController =[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController" bundle:nil]; 
       datePickerViewController.delegate = self;  
       [self presentModalViewController:datePickerViewController animated:YES]; 
       [datePickerViewController release]; 
      break; 
     case 100002 : 
       NSLog(@"Button 2 was pressed"); 
       // some code 
      break; 
     } 
    } 

當您使用InterfaceBuilder中我沒有朋友用它,但你必須重新連結你的行動 我是從我的書面方式因此,如果沒有xcode,某些代碼可能會包含語法錯誤。但這是主要想法。

+0

非常感謝您....我可能無法將開關置於正確的位置..它給了我一個錯誤。我將它定位在[self presentModalViewController:datePickerViewController animated:YES]下的DatePickerModelExampleViewController下; ...我在哪裏需要找到它?非常感謝!你的幫助對我來說非常重要! – viviana 2010-11-18 20:04:23

+0

對不起,我是一個非常新的程序員......你是什麼意思,在按鈕上設置屬性「標籤」?......你的意思是在.xib文件中創建連接? – viviana 2010-11-18 20:35:05

+0

該錯誤是旁邊的開關,並說:預期的標識符或'('之前'開關' – viviana 2010-11-18 20:39:44

0

兩個按鈕使用的標籤,並檢查相應的條件日期選取器...

+0

@viviana:你的標籤必須是一個數字。 – 2010-11-19 09:07:50

相關問題