實現功能為:點擊cell輸入框,輸入字符串,然后要獲取保存已輸入的字符串。這是一個tableview列表共顯示有11個cell,點擊輸入填寫金額cell,這個cell里面有一個UITextField控件,于是樓主想到利用UITextFieldDelegate的代理方法,在cell里通過代理方法獲得輸入的字符串,然后通過block在控制器里拿到字符串,最后通過賦值給已經定義的model替換掉初始化時數組里的model,通過indexPath.row來定位具體替換數組里那個model。
這么實現顯然是沒問題的,方便簡潔,不需要重新定義數組,model,輸入金額cell是用xib寫的,直接拖控件,在xib里鏈接UITextField代理,在cell的.h文件里寫上UITextFieldDelegate,聲明bolck,通過- (void)textFieldDidEndEditing:(UITextField*)textField;代理方法獲取輸入字符串,用block傳遞給控制器,在控制器里保存到數組中;到這里就只是兩個字:完美!
真的完美嗎?可當樓主這么寫完時,卻發現根本獲取不到字符串,為什么?一臉懵逼,,,
老辦法,打斷點,結果發現cell 里的block沒運行,why?因為代理方法根本就沒觸發(block寫在代理里),代理方法為嘛沒觸發,代理設置了,難道是代理方法有問題?顯然沒問題,,,百思不解,,,代理寫了,也設置了,不應該啊,,,后面發現是cell里設置代理的問題,不能直接拖線設置,cell不是控制器,要用代碼設置,self.trailLab.delegate=self;然后然后問題解決了,,,平常直接在xib里拖線設置代理,習慣了,一般是控制器里設置代理,在cell里設置代理不常見,所以才會出現那樣的問題吧,,,
自己今天搬磚時遇到的一點小問題,記錄下,分享給自己和大家~(可能理解的不一定正確,還希望遇到大神斧正~~~)