1

3つのタブがあるUITabBarアプリケーションがあります。最初のタブには、ユーザーが日付を選択できるようにするモーダルUIViewControllerを表示するUIButtonを備えたUIViewControllerがあります。ユーザーが選択した日付を選択したときに、UIButtonのラベルを更新するのに問題があります。

私のメインビューコントローラー.h/.m

#import <UIKit/UIKit.h>

@interface SearchViewController : UIViewController {
    IBOutlet UIButton *butFromDate;
}

@property (nonatomic, retain) UIButton *butFromDate;

- (IBAction)pickDate:(id)sender;

@end

////////////////////////////////////////////

#import "SearchViewController.h"
#import "SearchDatePickerViewController.h"

@implementation SearchViewController

@synthesize butFromDate;

- (IBAction)pickDate:(id)sender{
    SearchDatePickerViewController *sampleView = [[[SearchDatePickerViewController alloc] init] autorelease];

    [sampleView setModalTransitionStyle:UIModalTransitionStylePartialCurl];
    [self presentModalViewController:sampleView animated:YES];
}

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

@end

次に、私のモーダルウィンドウ(UIPickerと、ユーザーの選択をキャンセルまたは保存するためのUIBarButtonがいくつかあります).h/.mは次のようになります。

#import <UIKit/UIKit.h>

@interface SearchDatePickerViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
    NSMutableArray *dates;
    IBOutlet UIPickerView *picker;
}

@property (nonatomic, retain) NSMutableArray *dates;
@property (nonatomic, retain) UIPickerView *picker;

- (IBAction)cancelDatePick:(id)sender;
- (IBAction)pickDate:(id)sender;

@end

////////////////////////////////////////////

#import "SearchDatePickerViewController.h"
#import "SearchViewController.h"
#import "AppDelegate.h"
#import "Search.h"

@implementation SearchDatePickerViewController

@synthesize dates, picker;

- (IBAction)cancelDatePick:(id)sender{
    [self dismissModalViewControllerAnimated:YES];
}

- (IBAction)pickDate:(id)sender{
    HolidayCottagesAppDelegate *appDelegate = (HolidayCottagesAppDelegate *)[[UIApplication sharedApplication] delegate];
    SearchViewController *searchView = [SearchViewController alloc];
    appDelegate.currentSearch.fromDate = [dates objectAtIndex:[picker selectedRowInComponent:0]];

    [searchView.butFromDate setTitle:@"HELLO-TEST" forState:UIControlStateNormal];
    [self dismissModalViewControllerAnimated:YES];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    NSDate* curDate = [NSDate date];
    NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate];
    NSTimeZone* gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    dates = [[NSMutableArray alloc] init];

    [comps setTimeZone:gmt];
    [comps setWeekday:7];

    int startCount = comps.week + 1;
    int endCount = (((52 - startCount) + 52) + startCount);

    for (startCount; startCount <= endCount; startCount++){
        NSDate *tDate = [calendar dateFromComponents:comps];
        [dates addObject:tDate];
        [comps setWeek:startCount];
    }
}

// OTHER SHIZZLE HERE BUT NOT REALLY NEEDED TO DISPLAY...

したがって、[保存]ボタンをクリックすると、-(void)pickDate:all okが実行され、モーダルビューが閉じられますが、SearchViewControllerのUIButtonラベルが「HELLO-TEST」に更新されません。私はここで簡単な何かが欠けていると確信しています...

私を助けてください!!

ありがとう :)

4

3 に答える 3

3

メインビューコントローラーで、検索日付ピッカービューコントローラーに「自己」参照を渡してから、検索日付ピッカービューでメインビューコントローラーのivarを設定し、その参照をのpickDateメソッドで使用する必要があります。日付ピッカービューを検索します。この正確な主題に関する昨年の私のブログエントリをチェックしてください:

http://www.dosomethinghere.com/2009/10/04/passing-values-and-messages-between-views-on-iphone/

于 2010-11-16T14:26:02.043 に答える
2

カスタムデリゲートメソッドの実装方法を知っていれば、それは非常に簡単です。ピッカービューで必要なパラメーター(値を取得する場所で委任していると想定)を使用して委任メソッドを定義し、UIViewControllerでこのメソッドを呼び出して委任メッセージから値を割り当てることを定義します。いくつかの例が必要な場合は、いくつかお送りします。

于 2010-11-16T14:37:51.317 に答える
0

以下のリンクを参照してください。それが誰かを助けることを願っています。

http://www.gisnotes.com/wordpress/2009/08/iphone-note-5-presenting-a-datepicker-as-a-viewcontroller-modally/

于 2011-02-10T21:49:26.403 に答える