2012-10-23 40 views
0

我想給我的導航控制器上的UITableViewController上的字符串變量賦值。這個目標-c,從一個視圖傳遞數據到另一個IOS有什麼問題IOS

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
// now you can use cell.textLabel.text 
NSMutableString *v = [[NSMutableString alloc] init]; 
[v setString:cell.textLabel.text]; 

DCAArtistViewController *dvController = [[DCAArtistViewController alloc] init]; 


if ([v isEqual:@"UK"]) { 

    dvController.st [email protected]"75"; 

} 

[self.navigationController pushViewController:dvController animated:YES]; 

我已經試過

[dvController.st setString:@"75"]; 

在被加載我有一個NSLog的視圖會始終顯示爲空。

NSLog(@"The st is%@",st); 

我在做什麼錯?我見過的例子顯示賦予一個視圖控制器上的屬性,像這樣dvController.st = @「75」;

的DCAArtistViewController .H

#import <UIKit/UIKit.h> 


@interface DCAArtistViewController : UITableViewController{ 

NSString *st; 
NSMutableArray *aa; 

} 
@property (nonatomic, retain) NSMutableArray *listOfItemss; 
@property (nonatomic, retain) NSString *st; 
@property (nonatomic, retain) NSMutableArray *aa; 

@end 

這是DCAArtistViewController(即加載的視圖)的開始

@implementation DCAArtistViewController 
@synthesize listOfItemss; 
@synthesize st; 
@synthesize aa; 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
self = [super initWithStyle:style]; 
if (self) { 

    aa = [[NSMutableArray alloc] init]; 
    NSLog(@"The st is%@",st); 
    NSLog(@"The self st is%@",st); 
+2

您確定'v'等於UK嗎?如果是這樣,請展示如何在DCArtistViewController類上設置'st'屬性。 – rmaddy

+0

是的,我肯定已經遍歷了調試器中的代碼,並根據表中選擇的內容點擊相應的if語句。我只是爲了簡單展示英國。 V確實匹配正確,視圖加載。 – Lismore

+0

你可以提供DCAArtistViewController的一些代碼,如屬性'st'的聲明,以及它可能在.m中更改的位置? – WDUK

回答

0

問題很簡單。您在init方法中記錄st。但是,在調用init方法之後,您不會設置st屬性。

+0

這是正確的。嘗試將其記錄在viewDidLoad或viewWillAppear中。另外,我會嘗試使用更好的變量名稱。如果您的應用程序/類增長,這些名稱將不會很有幫助。 – Matt

+0

我將代碼移動到了viewDidLoad,它顯示了正確的值,謝謝你們通宵達意地破壞了我的頭, – Lismore

+0

優秀的@rmaddy,通過將該值傳遞給加載的視圖,它正確加載了每個國家的表列表。進度 – Lismore

0

我明白了。在你的頭文件,你有兩種:

@interface DCAArtistViewController : UITableViewController{ 
    NSString *st; 
} 

@property (nonatomic, retain) NSString *st; 

這意味着在技術上你聲明兩個變量,在本地命名爲_stst_st由產生的getter/setter的物業管理)

當設置您的字符串,您在技術上將其設置爲-st,因爲您在dvController.st [email protected]"75";內使用.表示法。當使用NSLog時,您試圖打印出st

解決方案:從您的界面中刪除NSString* st,如果您還有財產,則不需要它。在NSLog內,請使用NSLog(@"The st is%@",_st);NSLog(@"The st is%@",self.st);

+0

對不起,這是不正確的。他在.m文件中有一個@synthesize st;行。這將'st'屬性賦予'st'ivar。這裏沒有創建'_st'伊娃。 – rmaddy

+0

我的不好,我錯過了@合成!道歉 – WDUK

+0

不用麻煩,我將加載視圖中的代碼從initWithStyle方法移至viewDidLoad方法,並顯示傳遞的值。 – Lismore

相關問題