2013-04-13 59 views
0

我遇到了一些標籤問題。我做了一個公共方法,它從表視圖獲取信息,並在3標籤,文本視圖中顯示此信息,並從網站加載圖片。我在表視圖didSelectRowAtIndexPath方法中設置了所有變量,但我在顯示該信息時遇到了一些問題。在表視圖控制器 我打電話給其他方法,以便::我做了這麼在標籤上設置文本時出現iOS 6問題

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.detailCharacterViewController = [[DetailCharacterViewController alloc] init]; 
    [self.detailCharacterViewController setupDetailViewControllerWithName:[self.arrayCharacters[indexPath.row] objectForKey:@"name"] andSurname:[self.arrayCharacters[indexPath.row] objectForKey:@"surname"] andKind:[self.arrayCharacters[indexPath.row] objectForKey:@"kind"] andDescription:[self.arrayCharacters[indexPath.row] objectForKey:@"description"] andImage:[self.arrayCharacters[indexPath.row] objectForKey:@"URLpic"]]; 
} 

和我實現了方法,以便:

- (void)setupDetailViewControllerWithName:(NSString*)name andSurname:(NSString *)surname andKind:(NSString*) kind andDescription:(NSString*)description andImage:(NSString*)url { 
    NSLog(@"name = %@", name); 
    self.labelName.text = name; 
    self.labelSurname.text = surname; 
    self.labelKind.text = kind; 
    self.textDescription.text = description; 

    NSURL *urlPic = [NSURL URLWithString:url]; 
    NSData *dataPic = [NSData dataWithContentsOfURL:urlPic]; 
    [self.imagePic setImage:[UIImage imageWithData:dataPic]]; 
} 

如果我看的日誌我看到正確的事,但如果我在iPhone或iPhone模擬器上查看GUI,它將保持空白。這段代碼有什麼問題? 謝謝你的建議。

@Alex布倫德爾

#import <UIKit/UIKit.h> 



@interface DetailCharacterViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UILabel *labelName; 
@property (weak, nonatomic) IBOutlet UILabel *labelSurname; 
@property (weak, nonatomic) IBOutlet UILabel *labelKind; 
@property (weak, nonatomic) IBOutlet UIImageView *imagePic; 
@property (weak, nonatomic) IBOutlet UITextView *textDescription; 

- (void)setupDetailViewControllerWithName:(NSString*)name andSurname:(NSString *)surname andKind:(NSString*) kind andDescription:(NSString*)description andImage:(NSString*)url; 

@end 
+0

檢查掛接或不出口。 –

回答

2

問題是您撥打setupDetailViewControllerWithName:...時尚未加載您的DetailCharacterViewController的視圖,因此沒有任何插座已連接(尚)。通過alloc-init實例化視圖控制器,不是自動加載其視圖。

您可以通過在設置方法開始時調用[self view]來強制加載視圖。這是可行的,因爲訪問view屬性會自動加載視圖,如果它之前沒有加載。

此外,也可以使視圖控制器的namesurnameNSString性能和viewDidLoad設置相應的標籤。

+0

我嘗試了你向我建議的第一個解決方案,但是沒有...仍然是一樣的...第二個解決方案的問題將是相同的......變量NSString *名稱中沒有文本。我在方法didSelectRowAtIndexPath中初始化它: self.detailCharacterViewController.name = [self.arrayCharacters [indexPath.row] objectForKey:@「name」]; – lucgian841

+0

我爲detailCharacterViewController創建了一個屬性 – lucgian841

+0

您如何真正顯示'detailCharacterViewController'?在'tableView:didSelectRowAtIndexPath:'方法中,您只需設置它,但是如何/在哪裏將它展示在屏幕上? – omz

1

您使用的界面生成器/故事板來設計你的界面?你是否確保爲每個UITextField/View連接IBOutlets?

您應該在視圖控制器類的頭文件中標識對象,並確保它們以IBOutlet爲前綴,以使它們出現在「界面構建器」連接窗格中。例如。

IBOutlet UITextField labelName; 
[...] 

然後,你需要去IB,去連接窗格視圖控制器連接每個文本字段/視圖。

+0

我連接了所有的標籤,文本視圖和圖像視圖...(如果你看我的帖子,你可以看到我的.h文件)。 – lucgian841

+0

插座在'.h'文件中並不一定表示它正確連接。在「Interface Builder」中右鍵單擊其中一個標籤,然後查看連接是否如您期望的那樣。 – Sam

+0

這是正確的...我在那個問題開始時檢查了他們... – lucgian841

0

這個問題也發生在我身上。

它與事實上,iOS實際上掛鉤你的網點真的很晚

如果您在您的setupDetailViewControllerWithName:中放置斷點並檢查IBOutlet變量,它們將爲零。這就是爲什麼你看到一個空白的觀點。 (良好的老零誤差)

我要做的解決辦法是聲明DetailCharacterViewController類中的屬性。 (如@property (copy, nonatomic) NSString* name)。

而且在你調用setupDetailViewControllerWithName:的地方,設置這些屬性,而不是如:

self.detailCharacterViewController.name = name;

最後,在你的DetailCharacterViewControllerviewDidLoad:,您可以設置使用保存的屬性標籤的值。 (當然,這些插座是連接起來的)。

(順便說一句,存在prepareForSegue:以及該目標視圖控制器的網點都還在prepareForSegue:零這個問題。因此,你不能將它們直接到那一步)