Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 具有自定义逻辑的可重用UITableViewCell_Ios_Iphone_Objective C_Uitableview - Fatal编程技术网

Ios 具有自定义逻辑的可重用UITableViewCell

Ios 具有自定义逻辑的可重用UITableViewCell,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,我知道自定义的UITableViewCell可以通过编程或使用nib在故事板中创建。我还理解,任何与UI无关的逻辑都应该在控制器中,以遵循MVC(模型-视图-控制器)规则 在我的例子中,我有一个UITableViewCell,它显示用户信息,如个人资料图片和用户名。点击用户名执行i操作,并将用户带到相应的纵断面图。在执行服务器API请求的单元格中,我还有一个Follow and Unfollowui按钮。要在创建单元时遵守MVC规则,我向IButtons添加一个目标,并在包含UIViewCont

我知道自定义的
UITableViewCell
可以通过编程或使用nib在故事板中创建。我还理解,任何与UI无关的逻辑都应该在控制器中,以遵循MVC(模型-视图-控制器)规则

在我的例子中,我有一个
UITableViewCell
,它显示用户信息,如个人资料图片和用户名。点击用户名执行
i操作
,并将用户带到相应的纵断面图。在执行服务器API请求的单元格中,我还有一个Follow and Unfollow
ui按钮。要在创建单元时遵守MVC规则,我向
IButton
s添加一个目标,并在包含
UIViewController
中处理
TouchUpInside
事件

我希望在我的应用程序中的所有视图中重用此单元格,但无需每次都创建目标。 此外,如果没有
UIViewTableViewController
作为容器,故事板也不允许创建
UITableViewCells
,这是一个难题。我可以在故事板上使用混合笔尖吗


创建单元格并将功能添加到UITableViewCell的适当方式是什么

因为您在
故事板/xibs中,所以不需要每次在代码中添加
目标。您可以通过
xib
钩住他们的
iAction
。然后在
tableView:cellForRowAtIndexPath:
方法中,根据单元格的
indepath
设置按钮的标记

或者,您可以创建一个自定义单元格类(继承自
UITableViewCell
),并在该类中实现按钮操作。然后,您可以通过委托将消息传递给控制器


如果你想在不同的视图中重复这个单元格,那么最好的办法是用单独的
xib
创建一个单独的类,而不是在
情节提要中的一个特定的
控制器中创建一个
UITableViewCell
,我喜欢用它自己的类创建一个
UITableViewCell
xib
的想法,但这不会违背你的意愿吗MVC的规则?API调用不应该在
控制器中吗
?使用单独的xib创建单元格不会影响MVC,但是,创建单元格的委托以将操作传递给控制器会影响MVC。好,这很清楚。因此,我是否可以使用其类(继承自
UITableViewCell
)创建一个单元格,并在其中包含Follow/Unfollow API调用?不要在Cell子类中调用API函数。它应该始终位于控制器的视图中。如果您在单元子类中实现跟随/取消跟随按钮操作,则通过委托或通知将此消息传递给view controller。尽管有单元委托违反MVC,但您不必在使用该单元的每个控制器中设置目标。