Post

Replies

Boosts

Views

Activity

Setting table's rows programmatically
Hello Claude31,I hope that's you who resumes my last question. I tried to follow your advice:=> Create a new thread, copy your new post there, possibly giving a link to the first thread if needed=> Unmark your post and mark correct the real answer (post dated Mar 22, 2020 5:56 AM)=> Select each piece of code and hit <>Here the problem I want to post again:The problem we discussed is solved. Ok. Unfortunately, a new row selection problem has arised in a broader context. To understand, I need to describe this context a bit more than already done. There are the adapted lines of code you proposed: r_RowSelection = codeSystemTableView.indexPathsForSelectedRows! let selectedRows = r_RowSelection.map() { $0.row} r_RowSelectionDictionary[r_TemplateTerm] = selectedRows r_SelectedRowIndexes = IndexSet(selectedRows)Everything is ok.The broader context: The codeSystemTableView should be able to display more that one table - not simultaneously within one and the same view, but successively. This is done by operating a button that iterates through the available tables. This button calls a function that runs the following code: DispatchQueue.main.async { self.codeSystemTableView.reloadData() }That’s ok too. The different tables can be displayed and its rows can be selected or unselected. Understandably, the selection on a particular table vanishes between the iterations, i.e. after reloadData(). Therefore user cannot check the selection state of the different tables by iterating through the tables. To tackle this problem the selections on the different tables is layed down in a dictionary as shown in the code lines above. To restore the selections the dictionary’s selectedRows are cast into an IndexSet as you proposed: r_SelectedRowIndexes = IndexSet(selectedRows)An IndexSet is needed to set the table’s row selection state by means of this function according to Xcode’s manual: func selectRowIndexes(_ indexes: IndexSet, byExtendingSelection extend: Bool) Sets the row selection using indexes extending the selection if specified.Now, the new lines of code look like these: r_RowSelection = codeSystemTableView.indexPathsForSelectedRows! let selectedRows = r_RowSelection.map() { $0.row} r_RowSelectionDictionary[r_TemplateTerm] = selectedRows r_SelectedRowIndexes = IndexSet(selectedRows) codeSystemTableView.selectRowIndexes(r_SelectedRowIndexes, YES)1. Problem. The last line throws an error: Value of type 'UITableView' has no member 'selectRowIndexes' contradictory to what Xcode’s documents say.2. Problem. Printing r_RowSelection, selectRowIndexes, r_RowSelectionDictionary shows: r_RowSelection is [[0, 0], [0, 2], [0, 4], [0, 6]]) r_SelectedRowIndexes is 4 indexes r_RowSelectionDictionary is ["Template 1": [0, 2, 4, 6]]The r_RowSelectionDictionary contains one item. That’s ok because until now only one table has been activated. Iterating to the next table shows the following printout. r_RowSelection is [[0, 0]]) r_SelectedRowIndexes is 1 indexes r_RowSelectionDictionary is ["Template 1": [0, 2, 4, 6], "Template 2": [0]]That’s ok too. Now, two tables have been activated and some items selected. But what is wrong or irritating, the printed r_SelectedRowIndexes does not show the IndexSet but the number of items in the IndexSet, i.e. 4 indexes resp. 1 indexes: r_SelectedRowIndexes is 4 indexes r_SelectedRowIndexes is 1 indexesSome additional information to understand the code:The tables are represented by the keys "Template 1" and "Template 2". These keys refer to the appropriate tables. That’s ok too. For testing and demonstration there are two tables only. The number of tables is unlimited, at least theoretically.Do you have an idea how to solve these problems?Again, thank you very much for your help and please apologize my ignorance of the forum's rulesNow I hope I have done everything correctlyBest regardsgefa
6
0
1.1k
Mar ’20
How to init a button in iOS?
To init a button in Objective-C I do the following (old fashion style) :------------------------@interface …{ IBOutlet NSButton *__strong aButton; …}@property(strong) NSButton *__strong aButton;------------------------@implementation …@synthesize aButton;------------------------How can this be done in iOS and Swift?
8
0
943
Mar ’20