UITableView, UIPickerViewΪʲôҪʹÓÃdelegateģʽ
ÎÊÌâ:I get that with delegates you are delegating a task to another object. I guess I just don't understand why this is beneficial. ×î¼Ñ´ð°¸: ÔÎÄÈçÏÂ: [¨C]Eoghain4 points13 hours ago UITableView is the best example to think of here to get your head around it. What does the UITableView do?
And other things but that's a good place to start. Now you want to build an application that displays data in cells that can scroll on multiple pages without using delegates how would you create your own UITableView to be able to do this? I'm sure the basics above would be easy to implement and figure out,but what about these questions:
Is the version of UITableVIew that you are building even re-usable at this point? Not really,you'd have so much branching logic that your nice clean re-usable UITableView that just deals with laying things out on screen is a big buggy mess with no easy way to test it. Now if you just focused only on the core features of what a UITableView does and instead delegated out the application logic to someone else you can see how clean and testable your UITableView becomes. All it cares about is putting some view it's given by someone else on screen at a specific location,allowing the views it's displaying to scroll,and telling whoever cares when a cell get's touched. This version of UITableView can be used by anyone for any purpose to display any data. It doesn't care what that data is,it doesn't care what happens when a cell is touched. It just delegates those decisions to someone else. What delegates allow you to do is build re-usable code blocks that do "one" thing and do it well. They let the application logic be placed in less generic re-usable objects and allow developers to basically forget about all of the complexity of what the re-usable object is doing. How often do you concern yourself with the scrolling behavior of a UITableView? You don't,you know it'll work and do what it's told. £¨±à¼£ºÀî´óͬ£© ¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ! |
- c ¨C äÖȾµ½×ÀÃæ
- ¹ØÓÚswiftµÄ·ÃÎʼ¶±ð
- NorFlashºÍNandFlashÓÐÊ²Ã´Çø±ð£¿ÎªÊ²Ã´Ò»°ãÎÒÃǵÄUbootÒª´Ó
- sqlite 's readme for sqlite3-doc package
- objective-c ¨C ʹ×Ô¶¨ÒåÀàÐͳöÏÖÔÚXcodeµÄÎĵµµ¯³ö´°¿ÚÖÐ
- System.Data.SQLite °²×°ÎÊÌâС½á
- ruby ¨C Gem axlsxÈçºÎÉèÖÃ×ÖÌåfont_name£¿
- xml ¨C ´ø¶ººÅµÄXSLT¸ñʽ±àºÅ
- C#Éú³ÉDLLÎļþµÄ·½·¨Ð¡½á
- ÕýÔò±í´ïʽ ¨C sed£ºÎÒµÄģʽÊÇ·ñ°üº¬¡°²»ÊÇ¡±×Ö·û£¿ÎÒÔõô
- c# ¨C ¾ßÓС°this¡±¹Ø¼ü×ֵĽӿڳÉÔ±
- c# ¨C ´´½¨Ã»ÓÐMVVM¿ò¼ÜµÄ×Ó´°¿Ú
- VBÓ¦ÓóÌÐòµÄ´ò°ü
- jsonkit ½âÎö±¾µØÊý¾Ý
- µ±Process.Startµ÷ÓÃʱ,C#dllimportÅ׳öSEHExcep
- SQLiteÍâ¼üµÄʵÏÖ
- JSON.parse()ºÍJSON.stringify()
- ¡¸zoj2314¡¹Reactor Cooling (ÎÞÔ´»ãÉÏϽç¿ÉÐÐÁ÷
- c# ¨C °ïÖúASP.NET MVC HtmlHelper APIÉè¼Æ
- ruby-on-rails ¨C RailsÉè¼Æ°ïÖú·ÓÉ´íÎóûÓзÓÉ