我已經有了UItableview,還有兩個按鈕Next和Previous輕敲我應該選擇上一個/下一個單元格?可能嗎?此外,如何記住用戶上次點擊的單元格,以便在啓動時進行選擇?如何以編程方式轉到UITableView中的下一個/上一個單元格?
4
A
回答
9
實施的UITableViewDelegate並保存在didSelectRowAtIndexPath方法當前選定的指標:
NSIndexPath *currentSelection;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
currentSelection = indexPath;
}
然後在您的按鈕操作,你可以這樣做......
- (IBAction)didTapNextButton:(id)sender{
//Remember to check boundaries before just setting an indexpath or your app will crash!
if(currentSelection){
currentSelection = [NSIndexPath indexPathForRow:currentSelection.row+1 inSection:currentSelection.section];
}else{
currentSelection = [NSIndexPath indexPathForRow:0 inSection:0];
}
[self.tableView selectRowAtIndexPath:currentSelection animated:YES scrollPosition: UITableViewScrollPositionTop];
}
1
最簡單的方法就是跟蹤的選定索引。
- 跟蹤選定的索引。
- 開啓按鈕改變索引。
- 重新載入表格。 [tableview reloadData];
所有你需要做的就是通過的cellForRowAtIndexPath功能公開所選指數:
if (indexPath.row == 0) {
cell.selected = true;
}
在對於第二部分我想你指的是狀態管理。如果是這樣的NSUserDefaults的是如何我通常做:)
// get
[[NSUserDefaults standardUserDefaults] objectForKey:@"myLastSelectedIndex"]
// set to 5
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:5] forKey:@"myLastSelectedIndex"]
0
你可以做到這一點與命名scrollToRowAtIndexPath方法的方法。你可以在選擇單元格時存儲indexPath。所以你可以在用戶重新啓動時恢復它。
0
對於選擇的tableView一些細胞,請,請使用:- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition
(http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html)。 對於索引選擇存儲您可以使用多種方式,但最有用的是:
NSUserDefaults* def = [NSUserDefaults standardUserDefaults];
[def setObject:selectNum forKay:@"someKay"];
[def synchronize];
,我想。
而在你的情況下,你最好關閉tableView標誌「User Interaction Enabled」。
2
這裏有幾個UITableView
類別的方法,可以從指定的NSIndexPath
找到下一個/前一個NSIndexPath
。
這些方法容納部分和空白部分。
@interface(.h)中
@interface UITableView(Extensions)
- (NSIndexPath *)nextIndexPathFromIndexPath:(NSIndexPath *)indexPath;
- (NSIndexPath *)prevIndexPathFromIndexPath:(NSIndexPath *)indexPath;
@end
@implementation(.M)
@implementation UITableView(Extensions)
-(NSIndexPath *)nextIndexPathFromIndexPath:(NSIndexPath *)indexPath {
return [self adjacentIndexPathFromIndexPath:indexPath goingForward:YES];
}
-(NSIndexPath *)prevIndexPathFromIndexPath:(NSIndexPath *)indexPath {
return [self adjacentIndexPathFromIndexPath:indexPath goingForward:NO];
}
-(NSIndexPath *)adjacentIndexPathFromIndexPath:(NSIndexPath *)indexPath goingForward:(BOOL)goingForward {
NSInteger delta = goingForward ? 1 : -1;
NSInteger adjRow = indexPath.row + delta;
if (adjRow >= 0 && adjRow < [self numberOfRowsInSection:indexPath.section]) {
//Adjacent row in same section...
return [NSIndexPath indexPathForRow:adjRow inSection:indexPath.section];
}
NSInteger adjSection = indexPath.section + delta;
if (adjSection < 0) {
adjSection = [self numberOfSections] - 1;
} else if (adjSection > [self numberOfSections] - 1) {
adjSection = 0;
}
NSUInteger adjSectionRows = [self numberOfRowsInSection:adjSection];
if (!adjSectionRows) {
//Adjacent section is empty...
//Adjacent row in adjacent-adjacent section...
return [self adjacentIndexPathFromIndexPath:[NSIndexPath indexPathForRow:0 inSection:adjSection] goingForward:goingForward];
}
adjRow = goingForward ? 0 : adjSectionRows - 1;
//Adjacent row in adjacent section...
return [NSIndexPath indexPathForRow:adjRow inSection:adjSection];
}
@end
相關問題
- 1. 如何以編程方式選擇一個tableview單元格?
- 2. 從UITableView中選擇單元格並轉到另一個UITableView
- 3. 如何轉到UITableView中的下一個單元格(細節視圖)?
- 4. UITableView以編程方式滾動到不存在的單元格
- 5. 如何以編程方式「點擊」UITableView單元格?
- 6. iOS在UITableView滾動時跳轉到下一個單元格
- 7. 添加一個UIPickerView到UITableView單元格
- 8. 以編程方式在UITableView中定製單元格?
- 9. 以編程方式在UITableView單元格中添加邊距?
- 10. 以編程方式從UITableView中刪除單元格
- 11. 回覆按鈕以編程方式轉到上一個視圖
- 12. 以編程方式創建的單元格的響應性UITableView
- 13. 如何以編程方式創建一個以下的texviews?
- 14. 如何以編程方式增加iPhone中的UITableView單元格的高度?
- 15. UITableView單元格中的UITextField以編程方式成爲第一個應答程序
- 16. 如何以編程方式增加UITableView中單元格的高度?
- 17. 如何以編程方式回到上一個視圖
- 18. UITableView更改第一個上/下未使用的單元格
- 19. 創建一個固定格式的單元格中的UITableView
- 20. ime選項以編程方式「actionNext」 - 如何跳轉到下一個字段?
- 21. 如何以編程方式將一組文本添加到另一個下方?
- 22. UITableView編輯模式轉移單元格
- 23. 任何方式將值從一個單元轉移到另一個單元?
- 24. 以編程方式突出顯示UITableView單元格
- 25. 以編程方式向UITableView添加單元格
- 26. 以編程方式向UITableView添加單元格和行
- 27. 如何從一個單元格導航到下一個視圖?
- 28. 如何在下一個視圖上獲取單元格的文本點擊uitableview中的單元格
- 29. UITableView作爲另一個UITableView上的單元格取消滾動
- 30. 自動滾動到下一個/上一個單元格滑動
didSelectRowAtIndexPath方法尚未調用(( –
然後,你需要選擇一個起始索引在你的按鈕動作中,如果沒有選擇,我已經更新了我的答案中的代碼,以顯示如何完成,檢查出來。 – mjisrawi