簡體   English   中英

值不返回到父視圖控制器?

[英]Values not returning to parent view controller?

在我的父視圖控制器中,我呈現了一個模態視圖控制器,從modalview用戶可以選擇其國家,城市,緯度和經度等,如果用戶單擊模態視圖中的完成按鈕,則值將顯示在下一個模態視圖中。經過一些計算后,需要在父視圖控制器中更新標簽,但是這些值並未更新我的標簽,這是代碼,

//模態視圖控制器中的完成方法

- (IBAction)doneButtonClicked:(id)sender {
NSLog(@"Before Done %@ %@ %f %f %f %f",_finalCountryName,_finalCityName,_finalCityLatitude,_finalCityLongitude,_finalCityTimezone,_finalCityDaylight);

//opening screen is my parent view controller
OpeningScreen *open = [[OpeningScreen alloc]init];
[open rebackInitialisation];
[open manualSalatCalculation:_finalCityLatitude manLong:_finalCityLongitude manTz:_finalCityTimezone manDls:_finalCityDaylight];
[self dismissViewControllerAnimated:YES completion:nil];
}

//父視圖控制器(OpeningScreen)中的方法

-(void)manualSalatCalculation:(double)manLat manLong:(double)manLon manTz:(double)manTz manDls:(double)manDls {
NSLog(@"Manual Values are %f %f %f %f",manLat,manLon,manTz,manDls);   ========>>> Here values are coming

if (!manLat == 0.0 && !manLon == 0.0) {
    double tZone =0.0;
    if([curDayLightStatString isEqualToString:@"Disable"]) {
        tZone = manTz;
    }
    if([curDayLightStatString isEqualToString:@"Enable"]) {
        tZone = manTz + manDls;
    }

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
self.manualTimesArray = [prayCalc getPrayerTimes:components andLatitude:manLat andLongitude:manLon andtimeZone:tZone];
NSLog(@"manual calculated array values are %@",self.manualTimesArray); =======================>>> Here values are not coming so not updating my labels
first.text = [NSString stringWithFormat:@"%@",[self.manualTimes objectAtIndex:0]];
second.text = [NSString stringWithFormat:@"%@",[self.manualTimes objectAtIndex:2]];
third.text = [NSString stringWithFormat:@"%@",[self.manualTimes objectAtIndex:3]];
fourth.text = [NSString stringWithFormat:@"%@",[self.manualTimes objectAtIndex:5]];
fifth.text = [NSString stringWithFormat:@"%@",[self.manualTimes objectAtIndex:6]];
}
}

問題所在

  1. 您正在調用錯誤的OpeningScreen實例。 通過調用[[OpeningScreen alloc] init]您正在創建一個與父視圖控制器不同的新實例。

  2. 模態視圖控制器和OpeningScreen類之間存在緊密的OpeningScreen

在模態視圖控制器與其父視圖控制器之間進行通信的常規方式是利用“委托”設計模式。

在實現它時,您定義了父視圖控制器必須實現的協議,即“ CalculatorDelegate”,然后在創建模態視圖控制器期間,將父視圖控制器作為弱屬性提供給模態視圖控制器。

這樣,子視圖控制器不會創建OpeningScreen的新實例,甚至不需要知道它的存在。

請參閱此SO帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM