Custom Mail Composer View Controller for iOS - ios

I want to have a mail composer view in my app but with a few extra fields and stuff. Since the original view controller Apple provides, MFMailComposeViewController doesn't allow any way to customize it.
So after a little bit of researching I came across the Three20 framework for iOS which provides a view controller called TTMessageController suits my needs. But I did some some checking on this framework and the feedback I've been reading doesn't sound too good. I even tried downloading, following the instructions to add it in a project but that ended up throwing errors also.
My question is, are there any other alternatives to the Three20's TTMessageController? I want to have a view controller where I can add some more input fields to customize it.
Thank you.

Three20 is completely outdated and not suitable for use in a modern Xcode project (using ARC and all the new Objective C features from the last 2 years). Three20 has a very large dependency chain, and you will find yourself stuck trying to make sense of its class heirarchy just to accomplish simple things.
Also, as you correctly pointed out, MFMailComposeViewController cannot be customized in any way other than what is documented by Apple.
The only way to achieve what you want is to start from scratch with an empty UIViewController, and add the text fields you need - either programmatically, or using XIBs or using Storyboards.
I realize this answer doesn't provide you any new information but at least this confirms your feeling that using Three20 for this is a bad idea.

Related

Multirole iOS application - Should Logic in Same or Different View Controllers for Multiple Roles?

I'm a newbie to iOS and now trying to design an app for multiple roles who can log in from home page.
At first, I tried to give each role a completely separate line of its own view controllers. But later, I found a lot of interfaces and codes are the same among different roles and it will be a huge amount of work to copy and paste.
So now, I try to have only one major line of view controllers and then capture the user identity to change the display (hide and unhide functions) according to different roles. But I'm not sure if this is the real preferred way to handle this kind of multirole application?
(If my question is not clear, please tell me!)
Thanks!
have only one major line of view controllers and then capture the user identity to change the display (hide and unhide functions) according to different roles.
This is the most efficient way to do this, because that way you don't repeat yourself. Having too much code (view controllers) for just small changes will create unnecessary clutter, both code-wise and space-wise.
Even if you are a newbie, try to implement best practices wherever you can, because people generally get used to what they did when they were new, and changing how you write code when you are more experienced is much harder.
First you are new to iOS.Now you are going to develop application with
multiple roles like Register,Login,Showing List,Edit
Page,Settings.....etc.If you are a newbie you can create separate view
controller for above thing.If you want to use string,id,number,...or
anything globally you can create singleton class for access that.If
you gain experience or If you get more knowledge,you can create common
view controller and class for accessing functions,variables in whole
project.Now you must learn basic things for creating application and
use without any error,crash.Learn all basics first.

Adding a settings page inside my app (Xcode and Swift)

I want to add a settings page within my app.
I have seen that there is a way to have a settings page (settings bundle) inside the native Settings app (like here: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html). But I want to have the settings for my app, within my app.
I could do a couple of things, but I don't know which is the right approach... I could use the InAppSettingsKit (http://www.inappsettingskit.com/) or do everything manually which would be very messy(I think?) What have you guys/girls done with your settings in the past, and what do you think would be the best approach to this? And is there a better approach to this problem, than what I have listed above?
Thanks so much :)
Depending the number of parameters you need in your settings, the approach could be different.
If you have a lot of parameters, with the need of rows containing sliders, switches or whatever advanced cell configuration, then using a library such as InAppSettingsKit is a good bet.
On the other hand, if you have only a few parameters, using UITableViewController with Static Cells and Grouped Style could be sufficient. You can do a lot of things in Interface Builder and perform actions in code.
Choose the approach you're most comfortable with, I think both are respectable.

How can I add functionality to a 3rd party iOS library?

There's a cocoapods calendar library I'm using that I want to add some functionality/change the behavior for a couple minor things. What's the preferred way to do this?
Can I define a child class that overrides the functionality? I assume that changing the code in the Pod's source is not the way to do it - what is?
This is not really a question for stackoverflow. It should really be posted to https://softwareengineering.stackexchange.com/. I give my answer anyways.
First and foremost, you have to follow the license. Most open source allows you to make changes as long as you commit those changes back to the project. If you think that what you are doing will be valuable to the community, you should start contributing.
Other than modifying the source, you should be able to use it any way you need. Subclass to extend. Add categories to augment. Embed in your own classes to manage.
All you really need to do is follow the license. Usually this means attribution and contributing modifications.
If you are adding completely new functionality to the library and not overriding functionality it provides, I suggest creating a category.

How to present actions from multiple modules on one page in ZF2?

I'm rewriting an app to ZF2 and I got stuck on problem of aggregating views from many modules on one page. What I want to achieve is to separate functionalities into modules, but still be able to display their views/actions (not sure how to name it) on one page. Let's say I'd layout a page with 4 containers and each of them would display some view from 4 different modules. Is it possible, if yes then how? Or maybe my though process is wrong here (I'm set on separating those functionalities though).
I've tried defining same or similar routes (eg. Module1: /boo/[:yah], Module2 /boo/[:whatever]). It didn't work because first module loaded was apparently served. And it looks like a mess too.
I've read a little about view helpers, but seemed to be aimed at a different purpose of providing common functionalities across many views. Whereas what I need if something like a layouting helper, view aggregation or something. I've worked with a home-made framework before that had this concept of site controllers, that would fire up different controllers actions. I can't find a way to emulate this in ZF2.
I'd appreciate any suggestions.
I've been applying forward plugin for this purpose as described in the blogpost suggested by Sam. It doesn't look elegant, but then I can't think of anything better myself.

Partially displayed UITableViewController like Facebook iphone app

I'm searching for the API which propose a tableView partially uncovered, like the one in Facebook app menu. I've seen it in several other apps.
I've heard the Facebook uses the Three20 lib, but this kind of control is not part of their catalog (http://three20.info/). Moreover, three20 seems to be a bit outdated.
If its Three20, which class is it? If no, does it come from an API?
Thanks
Facebook does not use Three20 anymore (besides, I strongly discourage its use since it is quite outdated and adds too much dependencies to a project)
Look at third party libraries, there are plenty to do this on Google.
For example, simply on CocoaControls.com you can find this one or this one among others.

Resources