2013-06-11 59 views
0

我已經實現了每次返回0的代碼。我試圖從一個可變數組中刪除一個字符串,並在按下按鈕後選中該行的值。如何從表格視圖中正確獲取行值?

相關代碼:

- (IBAction)remove:(id)sender { 
    NSIndexPath *selectedIndexPath = [_tableView2 indexPathForSelectedRow]; 
    [names removeObject:[NSString stringWithFormat:@"%i",selectedIndexPath.row]]; 
    testLabel.text=[NSString stringWithFormat:@"%i",selectedIndexPath.row]; 
    [_tableView2 reloadData]; 
} 

測試標籤顯示0每次按下按鈕時,無論在哪裏的tableview被選擇。

讓我知道是否有其他相關的代碼(如tableView),你希望我發佈。

+0

請看我的更新版本。 – LuisCien

回答

1

對於UITableView,選定的行概念僅在用戶觸摸該行時有效。出於這個原因,indexPathForSelectedRow被記錄爲返回「索引路徑標識所選行的行和部分索引,或者如果索引路徑無效,則爲零」。

我的意見是,您正在獲取nil結果, row方法中nil會導致您的姓名顯示爲零。

解決方案取決於數據源實現的其餘部分,但可能需要在didSelectRowAtIndexPath:中存儲輕敲索引,以便稍後在刪除方法中使用它。

(我認爲你沒有使用allowsMultipleSelectionDuringEditing選項,你也不會編輯表格)。

+0

我以爲我實施的東西太容易了......謝謝。我會研究didSelectRowAtIndexPath文檔並回復您。是的,你是對的,我假設我不允許多選。 –

+0

除非你將UITableView的屬性'allowedSelection'設置爲'NO',否則我認爲情況並非如此。當你在表格視圖中選擇一個單元格時,單元格保持選定狀態,直到你發送'deselectRowAtIndexPath:animated:'消息爲止 – LuisCien

+0

你完全正確@LuisCien,但我認爲他沒有實現'didSelectRowAtIndexPath:'默認情況下取消選擇)或者以最常用的方式實現它(這涉及在最後調用取消選擇方法,以防沒有視圖控制器改變)。 – yonosoytu

1

相反的:

[names removeObject:[NSString stringWithFormat:@"%i",selectedIndexPath.row]]; 

嘗試:

[name removeObjectAtIndex:selectedIndexPath.row]; 

而是採用另外,@ 「%i」 的,請嘗試使用@ 「%d」 提到here

希望這幫助!

+0

這是比我更好的代碼,但不幸的是,正如我上面提到的,我的問題是selectedIndexPath.row每次都返回0。我已經做出了相同結果的更改。雖然謝謝! –

+0

嘗試NSLog'selectedIndexPath'當你第一次獲得它。 – LuisCien