2016-11-08 103 views
1

我已經創建了新聞提要應用程序。我從服務器獲取新聞數據。在我的數據新聞可用文本或圖像與文本(Facebook的飼料相同)。 我已經成功地在UITableviewCell中創建帶有文本內容的圖像,但是我想在UITableViewCell文本或圖像中多次使用文本,多個單元格第一個單元格只是文本,第二個單元格是帶有文本的圖像。如何創建,我知道我沒有解釋正確的方式,但我想創建一個Facebook供稿(TimeLine)相同。如何快速創建新聞提要界面

以及哪種類型的數組或字典創建此視圖。文本視圖中的一些單元格以及一些單元格圖像和文本視圖。如何創建動態單元格。我感到很困惑。如何創建新聞Feed UI以及創建此新聞Feed的哪種類型的數組。請幫忙。我是IOS新手。謝謝。

請找到附件,看看。我想要這樣。

只有文本視圖 enter image description here

圖像和文本視圖

enter image description here

回答

0

添加UILabelUIImageView,正如您通常在單元格中一樣。 (如果你只是顯示文字,我會建議UILabel而不是UITextView,如果我錯了,請糾正我的錯誤)。設置標籤的約束條件,使其具有領先,頂部和尾部。將其numberOfLines設置爲0並將內容模式設置爲word wrap。現在爲您的UIImageView,添加一個頂部到UILabel。領先,尾隨和底部至superView。現在還爲您的UIImageView設置高度限制,這將是最小值。爲您的單元格內的約束創建一個IBOutlet

現在,在你的UIViewController設置tableView.estimatedRowHeight屬性和tableView.rowHeight = UITableViewAutomaticDimensions。所以現在,在你的cellForRowAtIndexPath裏面,只要你的單元格包含一個圖像,高度約束就是最小值,否則將它設置爲0。

編輯:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    CustomCell *cell = [tableView dequeueReusableCellWithReuseIdentifier:@"cell"]; 

    //select your model from the array corresponding to your indexPath.row 
    CustomModel *model = array[indexPath.row] 

    // I am assuming you are fetching image from server 
    NSString *imageUrlString = model.imageUrl 

    //check your model if it contains an image 
    if(imageUrlString){ 
     cell.imageHeightConstraint = 250.0f; 
    }else{ 
     cell.imageHeightConstraint = 0.0f; 
    } 
} 
+0

我明白所有的點,請解釋只有[的cellForRowAtIndexPath]如何設置圖像的高度約束爲最低值,否則將其設置爲0。請解釋一些代碼 –

+0

我很熟悉與Objective - C,洙我補充說,也許它會幫助你迅速解決它。 – Rikh

+0

還有一件事請解決我最後的問題。在我看來,這是一個很大的混亂。通常,創建一個數組'var products:[String] = [「ponds」,「lakme」,「milk」]和圖像數組var image:[String] = [「logoimg.png」,「logoimg.png」]。圖像數組對象只有兩個。所以我的問題是如何決定在哪個單元格中加載圖片。否則如何在這個定義對中創建字典。同一圖像的新聞文字。 –

0

創建自定義tableViewCell將根據您的要求包含的TextView和ImageView的。並通過Link

而對於不同類型的數據類型,您必須創建一個鍵值對的字典(或字典數組)。請訪問Link

如果您有兩種類型的供稿,一種供圖像,另一種沒有供稿,則可以創建兩個不同的自定義單元並相應地使用它們。

另一種方法是通過創建約束插件將imageView的高度設置爲零,但我不會支持這一點,應該謹慎使用。

最好創建一個包含字典的數組。 你沒有圖像只是將「image」的值設置爲空字符串。

var dict1:[String:String] = ["text":"my text....","image":"imagename.png"] 
    var dict2: [String:String] = ["text": "my text...", "image":""] 
    var myDictArray = [[String:String]]() 
    myDictArray.append(dict1) 
    myDictArray.append(dict2) 

將它們放入uitableviewcell時,只需檢查鍵「image」的字典值。如果不是空的,則加載第一個自定義單元格(使用imageView和textView),否則加載第二個自定義單元格(不帶imageView)

+0

感謝您的回覆,我也創建自定義tableviewCell,但在tableview中詞典重裝的陣列當時一些細胞圖像不可用純文本使用。這種情況將如何管理圖像視圖隱藏或不是 –

+0

它不是強制性的圖像中可用的所有單元格。這兩個條件將如何管理 –

+1

放置一個佔位符圖像,並在其下載後將其替換爲圖像。 – kalpa