У меня есть приложение UITabBar, которое имеет три вкладки. Первая вкладка имеет UIViewController с UIButton, который отображает модальный UIViewController, чтобы позволить пользователю выбирать дату. У меня возникли проблемы с обновлением метки UIButton, когда пользователь выбрал выбранную дату.Как обновить метку 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, и пару UIBarButtons, чтобы отменить или сохранить выбор пользователя) .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...
Так что, когда я нажимаю на кнопку Сохранить, она работает - (недействительными) pickDate: все в порядке, и увольняет модальное представление, но оно не будет обновлять SearchViewController в UIButton метку «HELLO-TEST». Я уверен, что мне не хватает чего-то простого здесь ...
Пожалуйста, помогите мне!
Спасибо :)
BP, вы уступ. Я использовал ваше сообщение в блоге, чтобы исправить эту проблему. Я объявил главный контроллер представления внутри контроллера вторичного представления - как и вы (и изменил мой код, чтобы отразить это). Затем я запустил приложение, но он не обновлял текст (или ничего не записывал), поэтому я перепроверил ваш код и заметил, что я пропустил ссылку, в которой основной контроллер представления объявлен во вторичном представлении, установленном на «я». Сделал, и братья мои братья. Cheers :) – a1phanumeric
Вы всегда можете щелкнуть маленькую галочку рядом с моим ответом, чтобы отметить это как принятый ответ. ;) –