2014-01-20 21 views
0

我正在構建一個博客閱讀器應用程序,其中包含NSArray中的發佈對象列表。如何管理選定的單元格

cell.postTitle.text=post.Title; 

我試圖找出哪些職位已被選中,然後設置相應的cell.postTitle.text從輕字體。

不知何故,當導航控制器繼續回到頂層(並被銷燬?)時,我必須記住這個狀態。

任何人都可以告訴我最好的方法嗎?每個帖子對象都有一個postID。也許我可以將它存儲在NSUserDefault中,但是讀取postID的列表可能會隨着時間的推移而變得太大。

也有didSelectRowAtIndexPath但在這種方法中,我不能直接訪問單元格屬性?

+0

我做了[超級tableView:didSelectRowAtIndexPath:],這就是它崩潰的原因。但是我仍然無法改變字體。 'if([self.readPost containsObject:post.PostId]){cell_postTitle.font = [UIFont fontWithName:@「Helvetica-Light」size:14]; } cell.postTitle.text = post.Title; cell.subTitle.text = [NSString stringWithFormat:@「%i指向%@%@」,post.Points,post.Username,post.TimeCreatedString]; return cell; ' – user3142893

回答

0

如果您使用的是UITableView來顯示您的信息,您應該使用delgate didSelectRowAtIndexPath。

爲了使這個工作與自定義接口(我假設你有),你應該創建自己的自定義單元格,子類UITableViewCell並創建一個控制器和xib。然後,您可以將xib註冊到表格並使用它。然後你可以調用所需的屬性。

0

不知何故,當導航控制器繼續回到頂層(並被銷燬?)時,我必須記住這個狀態。 https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

當用戶點擊該單元格,您將調用其可以設置帖子ID值回頂部的委託方法:

這最好通過使用委託方法通過創建一個自定義協議處理控制器。

也有didSelectRowAtIndexPath但在這種方法中,我不能直接訪問單元格屬性?

是的,你可以在細胞。看看這個問題,回答: How to reach the current selected cell in didSelectRowAtIndexPath?

另外,如果你想在你使用首先創建表格單元格,在你didSelectRowAtIndexPath方法,你可以使用indexPath.row價值得到值的數據你的數組位於該索引位置並通過委託方法傳遞。

+0

嗨,我想我應該將所有選定的postID添加到數組中,並將其存儲在NSUserDefault中,以便在應用程序關閉之間保留它。出於某種原因,它現在正在崩潰。 – user3142893

+0

你用什麼來填充UITableView? –

+0

嘿,我解決了我的問題。謝謝。它崩潰的原因是因爲我在didSelectRowAtIndexPath中調用了super。 – user3142893

0

找到了解決方案。

只需將所選帖子的postId添加到didSelectRowAtIndexPath中的NSMutableArray即可。然後在cellForRowAtIndexPath中,我檢查以確保我的self.readPostID陣列中不存在postID。

如果是這樣,我將字體設置爲Helvetica Light,否則將其設置爲Helvetica Bold。

首先,我不得不確保[self.tableview reloadData]每次viewdidappear。

其次,我只是將readPostId的NSMutableArray保存到NSUserDefault,每次viewDidDisappear並重新加載viewDidLoad中的數組。

另外我必須確保單元重用不會影響字體。其他條件固定了。

相關問題